鱼C论坛

 找回密码
 立即注册
查看: 2149|回复: 5

[已解决]这个题为什么for循环只能遍历5次?求大神解答

[复制链接]
发表于 2023-3-19 10:53:50 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
letter=['A','B','C','D','D','D']
for i in letter
     if i=='D':
        letter.remove(i)
print(letter)


最佳答案
2023-3-27 12:59:29
你代码中有语法错误~

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' 元素后的结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-19 10:58:42 | 显示全部楼层
本帖最后由 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 1

使用道具 举报

发表于 2023-3-19 15:53:58 | 显示全部楼层
其实楼主这个代码能够运行起来我都感觉有点惊讶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-3-19 23:56:46 | 显示全部楼层
本帖最后由 未泯 于 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=[i for i in letter if i!='D']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-27 12:59:29 | 显示全部楼层    本楼为最佳答案   
你代码中有语法错误~

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' 元素后的结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-7 13:02:53 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 23:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表