我是python的新手,我想要做的就是从列表中删除一些对象。基本上列表架构是这样的:对于每个列表对象,(?)中有5个自定义类对象,所以索引就像list [0] [0]等。但是,我只能批量删除list [0]之类的东西],带走所有物体。这就是我在命令行中使用它:
>>> list.pop()[0][1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'nameless_class_to_protect_identity' object does not support indexing
所以它似乎与自定义对象本身有关。我自己没有定义这个课程,所以我真的不知道发生了什么。我怎样才能在类定义中定义一些内容,以便删除单个对象???
答案 0 :(得分:2)
pop返回的是列表的实际元素“不支持索引”(简而言之,返回的元素不是列表(实际上某些对象可以通过这种方式访问,但这是另一个故事))。因此例外。
你能做的是:
mylist.pop(index) # this will remove the element at index-th position
例如
>>> mylist = [1, 2, 3, 4]
>>> mylist.pop(1) # this will remove the element 2 of the list and return it
2 # returned element of the list
>>> print mylist
[1, 3, 4]
如果你对删除元素不感兴趣,你可以简单地使用del(假设索引存在):
del mylist[index]
例如
>>> mylist = [1, 2, 3, 4]
>>> del mylist[2]
>>> print mylist
[1, 2, 4]
如果是嵌套列表:
>>> mylist = [[1, 2], ['a', 'b', 'c'], 5]
>>> mylist[0].pop(1) # we pop the 2 element (element at index 1) of the list at index 0 of mylist
2
>>> print mylist
[[1], ['a', 'b', 'c'], 5]
>>> mylist.pop(1)[1] # here we pop (remove) the element at index 1 (which is a list) and get the element 1 of that returned list
'b'
>>> print mylist # mylist now possess only 2 elements
[[1], 5]
在不相关的说明中,我调用了列表变量mylist
而不是list
,以便不覆盖list
内置类型。 < / p>