Python内置列表:删除一个元素
lst = [(32,(4,5)),(55,(5,6))]
给定一个元组 (4,5),我想从列表 lst 中删除第一个元组。该怎么做呢?
抱歉,我说得不太清楚,我的意思是根据每个列表项中的第二个元素来删除列表项。
4 个回答
1
这段话的意思是,使用这个方法可以删除列表中第一个符合条件的项,但不要用这个方法去删除多个项。如果想删除多个项,可以使用列表推导式,或者像其他人建议的那样,遍历列表的一个副本(比如:for n in L[:]
)。在遍历一个列表的同时修改它,可能会导致一些意想不到的结果。
>>> def remove(L,t):
... for n in L:
... if n[1]==t:
... L.remove(n)
... break
...
>>> L=[(1,(2,3)),(4,(5,6)),(7,(2,3))]
>>> remove(L,(2,3))
>>> L
[(4, (5, 6)), (7, (2, 3))]
2
你可以对这个列表进行筛选:
lst = filter(lambda x, y: y != (4,5), lst)
7
lst2 = [(x, y) for (x, y) in lst if y != (4, 5)]
删除所有的 (4, 5) 组合,而不仅仅是第一个。