为了账号安全,请及时绑定邮箱和手机立即绑定

将单个元素列表视为 Python 中的标量

将单个元素列表视为 Python 中的标量

米琪卡哇伊 2021-08-17 10:41:48
¿是否可以定义一个 python 列表的子类,它允许使用单元素列表变量,就好像它们是标量一样?例如,我希望能够做到:class CustomList(list):    ...    ...list1 = CustomList([2])list2 = CustomList([3])list3 = CustomList([4,5,6])list4 = CustomList([{'foo':'bar'}])list1 #should return list1[0]list4['foo'] #should return list4[0]['foo'] = 'bar'list1 + list2 #should return list1[0] + list2[0] = 5但保持正常使用列表的能力:for i in list3:    print list[i]
查看完整描述

2 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

假设通过添加两个类意味着连接两个列表,您可以执行以下操作(注意 __add__ 方法以了解添加的工作原理):


from collections import MutableSequence


class CustomList(MutableSequence):

    def __init__(self, data=[]):

        self._list = data 


    def __add__(self, newlist):

        return self._list + newlist._list


    def __len__(self):

        return len(self._list)


    def __getitem__(self, i):

        return self._list[i]


    def __delitem__(self, i):

        del self._list[i]


    def __setitem__(self, i, val):

        self._list[i] = val


    def __str__(self):

        return str(self._list)


    def insert(self, i, val):

        self._list.insert(i, val)


查看完整回答
反对 回复 2021-08-17
  • 2 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信