我输入了一行代码
li = [1,2,3,4,5,6,7]
for i in li :
if i%2 == 0:
li.remove(i)
print(li)
[1, 3, 5, 7]
没关系
两个
li = [2,4,5,6,7]
for i in li :
if i%2 == 0:
li.remove(i)
print(li)
[4, 5, 7]
可以,但是我不知道为什么
三个
li = [2,6,4,5,4,7]
for i in li :
if i%2 == 0:
li.remove(i)
print(li)
[6, 5, 7]
可以,与第二个相同,但是我不知道为什么
四个
li = [2,6,4,5,6,7]
for i in li :
if i%2 == 0:
li.remove(i)
print(li)
[5, 6, 7]
我崩溃了
5
li = [2,6,5,6,6,7]
for i in li :
if i%2 == 0:
li.remove(i)
print(li)[5, 6, 6, 7]
对不起,在Google翻译的帮助下,我不太懂英语
任何帮助将不胜感激。
答案 0 :(得分:2)
就像@Lennart Regebro在他的answer中提到的那样,由于您每次在列表上进行迭代时都修改列表,因此获取该列表的副本并对其进行迭代比较安全,因为您会意外否则结果:
li = [2,6,5,6,6,7]
for i in li[:]: #Notice the [:] notation, it is used to create a copy of a list.
if i%2 == 0:
li.remove(i)
print(li)
结果:
[5, 7]
答案 1 :(得分:0)
您正在遍历列表时修改列表,这意味着在删除每个数字后,循环将避免删除值之后的第一个值,并取第二个下一个值,直到循环结束。
您可以复制列表以进行遍历并从原始列表中删除,如下所示:
li = [2,6,5,6,6,7]
li_copy = li.copy()
for i in li_copy :
if i%2 == 1:
li.remove(i)
print(li)
答案 2 :(得分:0)
Ahmed Hawary指出了您的错误。您也可以尝试使用此功能,列表理解功能使您可以轻松地基于任何条件修改现有列表。
[如果i%2!= 0,i代表我在li中