Python内置列表:删除一个元素

1 投票
4 回答
929 浏览
提问于 2025-04-16 09:41
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) 组合,而不仅仅是第一个。

撰写回答