不要留下遗憾 发表于 2022-7-30 15:39:55

python代码中break问题

想写一个求素数的程序,但是break想让他跳出第二层循环接着第一层循环,但它好像直接跳出两层循环,想问问问题出在哪里了

Twilight6 发表于 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 关键字设置为变量名

不要留下遗憾 发表于 2022-7-30 21:08:27

Twilight6 发表于 2022-7-30 15:39
因为你最外层 for 循环迭代的是原列表中的元素所在索引位置

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

谢谢兄弟,兄弟你的意思是我列表长度是4,第一层for循环执行4次,但是我用了remove导致原来的位置一个为空所以其实第一层for循环其实也执行了4次,但最后一次是空空执行是这样吗
页: [1]
查看完整版本: python代码中break问题