python中简单的控制流问题

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。

正确的做法:

  1. 把符合条件(小于等于 15)的数加到另外一个 list 里
  2. 使用列表推导生成新的 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

回到顶部