如何按索引从列表中删除元素?
我找到了list.remove(),但这会缓慢地按值扫描列表中的项。
如何按索引从列表中删除元素?
我找到了list.remove(),但这会缓慢地按值扫描列表中的项。
当前回答
您可以使用del或pop根据索引从列表中删除元素。Pop将打印从列表中删除的成员,而列表将删除该成员而不打印。
>>> a=[1,2,3,4,5]
>>> del a[1]
>>> a
[1, 3, 4, 5]
>>> a.pop(1)
3
>>> a
[1, 4, 5]
>>>
其他回答
你可能想要pop:
a = ['a', 'b', 'c', 'd']
a.pop(1)
# now a is ['a', 'c', 'd']
默认情况下,不带任何参数的pop将删除最后一项:
a = ['a', 'b', 'c', 'd']
a.pop()
# now a is ['a', 'b', 'c']
这取决于你想做什么。
如果要返回删除的元素,请使用pop():
>>> l = [1, 2, 3, 4, 5]
>>> l.pop(2)
3
>>> l
[1, 2, 4, 5]
但是,如果您只想删除一个元素,请使用del:
>>> l = [1, 2, 3, 4, 5]
>>> del l[2]
>>> l
[1, 2, 4, 5]
此外,del允许您使用切片(例如del[2:])。
可以使用del或pop,但我更喜欢del,因为您可以指定索引和切片,让用户对数据有更多的控制。
例如,从所示的列表开始,可以使用del作为切片删除其最后一个元素,然后可以使用pop从结果中删除最后一个。
>>> l = [1,2,3,4,5]
>>> del l[-1:]
>>> l
[1, 2, 3, 4]
>>> l.pop(-1)
4
>>> l
[1, 2, 3]
或者如果应删除多个索引:
print([v for i,v in enumerate(your_list) if i not in list_of_unwanted_indexes])
当然,也可以这样做:
print([v for i,v in enumerate(your_list) if i != unwanted_index])
pop对于从列表中删除和保留项目也很有用。del实际上在哪里丢弃了物品。
>>> x = [1, 2, 3, 4]
>>> p = x.pop(1)
>>> p
2