有以下形式的元组列表:
spam = [(1, 2), (1, 3), (2, 5), (5, 4), (1, 4)]
假设我想从列表中删除零元素等于 1 的所有元组。也就是说,你应该得到以下列表:
spam = [(2, 5), (5, 4)]
我试图用一个循环来做到这一点:
for item in spam:
if item[0] == 1:
spam.remove(item)
但在这种情况下,会跳过一些元素。我知道使用两个列表可以轻松解决此问题:
eggs = []
for item in spam:
if item[0] != 1:
eggs.append(item)
本质上,我们将简单地形成一个仅包含我们需要的元素的新列表。但是不使用第二个列表是否可以解决这个问题?
前两个选项使用旧列表的条件和数据创建一个新列表,它们在答案中作为最典型的 Pythonic 给出。
第三个选项更改旧列表。
还是循环,但是为了避免索引出现问题,需要从最后删除: