想要将一个列表中大于15的整数删去,代码如下。然而,运行后只删除了16,18等,17,19,21,23等没有删除
控制流为何出了问题?
烦请解答,感激不尽
a=[11, 12, 13,14, 15, 16,17, 18,19,20,21,22,23]
for k in a:
print (k)
if k >15:
a.remove(k)
continue
print(a)
想要将一个列表中大于15的整数删去,代码如下。然而,运行后只删除了16,18等,17,19,21,23等没有删除
控制流为何出了问题?
烦请解答,感激不尽
a=[11, 12, 13,14, 15, 16,17, 18,19,20,21,22,23]
for k in a:
print (k)
if k >15:
a.remove(k)
continue
print(a)
问题在于:你不能在 for in 遍历 list 的同时去修改该 list。
正确的做法:
犯了一个常见的错误,边遍历边修改了list的结构。
In [5]: a=[11, 12, 13,14, 15, 16,17, 18,19,20,21,22,23]
In [6]: b = [i for i in a if i <= 15]
In [7]: b
Out[7]: [11, 12, 13, 14, 15]
In [8]:
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
在对一个list遍历的时候,不要修改list里面的内容
可以试试下面的代码:
当然写成这样更清楚: