我知道关于这个话题有很多类似的问题,我已经做了足够的研究,让我觉得这个问题的转折点还没有被讨论过,或者只是很难找到。我知道你不能仅仅从你正在迭代的列表中删除条目,除非你使用了某种拷贝或者什么。我遇到的例子
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了)。有什么办法吗?你知道吗
请记住,您正在从原始列表中删除并迭代一个副本。副本中仍然包含7,因此9也将被删除。你知道吗
您可以向if语句添加另一个检查: 如果x==7且列表中有x: 列表.删除(九)
试试这个。你知道吗
您可以在同一个列表上工作,而不是迭代新列表。你知道吗
相关问题 更多 >
编程相关推荐