猿问

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

¿是否可以定义一个 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]


米琪卡哇伊
浏览 148回答 2
2回答

慕尼黑8549860

假设通过添加两个类意味着连接两个列表,您可以执行以下操作(注意 __add__ 方法以了解添加的工作原理):from collections import MutableSequenceclass 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)
随时随地看视频慕课网APP

相关分类

Python
我要回答