python中简单的控制流问题
想要将一个列表中大于15的整数删去,代码如下。然而,运行后只删除了16,18等,17,19,21,23等没有删除
控制流为何出了问题?
烦请解答,感激不尽
python">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)
回答:
在对一个list遍历的时候,不要修改list里面的内容
可以试试下面的代码:
a=[11, 12, 13,14, 15, 16,17, 18,19,20,21,22,23]b = []
for i in a:
if i <= 15:
b.append(i)
print(b)
当然写成这样更清楚:
a=[11, 12, 13,14, 15, 16,17, 18,19,20,21,22,23]a = [i for i in a if i <= 15]
print(a)
回答:
问题在于:你不能在 for in 遍历 list 的同时去修改该 list。
正确的做法:
- 把符合条件(小于等于 15)的数加到另外一个 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]:
以上是 python中简单的控制流问题 的全部内容, 来源链接: utcz.com/p/937663.html