我知道关于这个话题有很多类似的问题,我已经进行了足够的研究,让我觉得这个问题的转折还没有被讨论过,或者很难找到。我知道除非您使用某种副本或其他内容,否则您无法从正在迭代的列表中删除项目。我遇到的例子和
list=[1,2,3,4,5,6,7,8,9,10]
for x in list[:]:
if x==3:
list.remove(x)
list.remove(7)
这应该从列表中删除3和7。但是,如果我有以下内容怎么办?
for x in list[:]:
if x==3:
list.remove(x)
list.remove(7)
if x==7:
list.remove(9)
此迭代删除了3,7和9.因为7"应该"已经从之前的迭代中删除了,我实际上并不想要删除9(因为不再是列表中的7)。有没有办法做到这一点?
答案 0 :(得分:1)
您可以在if语句中添加另一项检查: 如果x == 7且列表中有x: list.remove(9)
答案 1 :(得分:0)
请记住,您要从原始列表中删除并迭代副本。该副本仍然包含7,因此9也将被删除。
答案 2 :(得分:0)
试试这个。
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for x in list1:
if x == 3:
list1.remove(x)
list1.remove(7)
if x == 7:
list1.remove(9)
print list1
Output: [1, 2, 4, 5, 6, 8, 9, 10]
不是迭代一个新列表,而是可以处理同一个列表。