这个题为什么for循环只能遍历5次?求大神解答
letter=['A','B','C','D','D','D']for i in letter
if i=='D':
letter.remove(i)
print(letter)
本帖最后由 isdkz 于 2023-3-19 11:01 编辑
在迭代的时候不要修改原来的迭代对象,因为使用 for 迭代的过程就是直到迭代对象的元素耗尽为止
而你在循环中使用 remove 删除原列表中的元素会使原来的迭代对象的元素更快耗尽,你可以使用一个副本来迭代
示例代码:
letter=['A','B','C','D','D','D']
for i in letter[:]:
if i=='D':
letter.remove(i)
print(letter)
其实楼主这个代码能够运行起来我都感觉有点惊讶{:10_256:} 本帖最后由 未泯 于 2023-3-20 00:00 编辑
0 1 2 3 4 5
A B C D D D
因为第四次索引是3的时候改变了原列表,你删了个D列表变成了['A','B','C','D','D'],第五次索引是4的时候把新列表索引是3的D漏掉了
示例代码:
letter=
你代码中有语法错误~
for 关键字后面添加冒号(:),并在循环体前面使用缩进。以下是修正后的代码:
letter=['A','B','C','D','D','D']
for i in letter:
if i=='D':
letter.remove(i)
print(letter)
尽管通过对 letter 列表进行修改,该代码实现了将所有 'D' 元素从列表中删除的目标,但它采用了对正在遍历的列表进行修改的方法,这是一个不好的做法,可能会导致预期之外的行为。
更好的方式:
letter=['A','B','C','D','D','D']
new_letter=[]
for i in letter:
if i!='D':
new_letter.append(i)
print(new_letter)
用一个新的列表来存储删除 'D' 元素后的结果 {:5_109:}
页:
[1]