鱼C论坛

 找回密码
 立即注册
查看: 2189|回复: 2

[已解决]python代码中break问题

[复制链接]
发表于 2022-7-30 15:39:55 | 显示全部楼层 |阅读模式
10鱼币
想写一个求素数的程序,但是break想让他跳出第二层循环接着第一层循环,但它好像直接跳出两层循环,想问问问题出在哪里了
最佳答案
2022-7-30 15:39:56

因为你最外层 for 循环迭代的是原列表中的元素所在索引位置

而你在 if 判断中 直接将 list 中元素移除,导致移除后 list 列表之后的元素索引都 -1

所以后续元素索引的改变,而 for 循环迭代到的索引值还是 + 1,导致最外层 for 循环实际漏迭代了

可以将第一个 for 循环处,循环 list 列表的拷贝,即将 for b in list: 改成 for b in list[:]: 即可

Ps:建议不要将 Python 关键字设置为变量名

4620a5d00ef20afb8cbdbf40b1697cc.png
6f99e76e05bd9db5bffb90436e0582f.png

最佳答案

查看完整内容

因为你最外层 for 循环迭代的是原列表中的元素所在索引位置 而你在 if 判断中 直接将 list 中元素移除,导致移除后 list 列表之后的元素索引都 -1 所以后续元素索引的改变,而 for 循环迭代到的索引值还是 + 1,导致最外层 for 循环实际漏迭代了 可以将第一个 for 循环处,循环 list 列表的拷贝,即将 for b in list: 改成 for b in list[:]: 即可 Ps:建议不要将 Python 关键字设置为变量名
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-30 15:39:56 | 显示全部楼层    本楼为最佳答案   

因为你最外层 for 循环迭代的是原列表中的元素所在索引位置

而你在 if 判断中 直接将 list 中元素移除,导致移除后 list 列表之后的元素索引都 -1

所以后续元素索引的改变,而 for 循环迭代到的索引值还是 + 1,导致最外层 for 循环实际漏迭代了

可以将第一个 for 循环处,循环 list 列表的拷贝,即将 for b in list: 改成 for b in list[:]: 即可

Ps:建议不要将 Python 关键字设置为变量名

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
python爱好者. + 5 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-7-30 21:08:27 | 显示全部楼层
Twilight6 发表于 2022-7-30 15:39
因为你最外层 for 循环迭代的是原列表中的元素所在索引位置

而你在 if 判断中 直接将 list 中元素移除 ...

谢谢兄弟,兄弟你的意思是我列表长度是4,第一层for循环执行4次,但是我用了remove导致原来的位置一个为空所以其实第一层for循环其实也执行了4次,但最后一次是空空执行是这样吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-29 09:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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