我不知道这是不是一个错误,但为什么会导致无休止的循环呢?
>>> top_ports = [[1], [0.9], [0.8], [0.7], [0.6]]
>>> a = 2
>>> for x in top_ports:
... if a > x[0]:
... top_ports.insert(0,a)
...
答案 0 :(得分:2)
x
表示top_ports
内的迭代元素。但是当a > x[0]
为true
时,会将一个元素添加到top_ports
:
top_ports.insert(0,a)
因为top_ports
的长度不断增加,for循环永远不会终止。
你也可以通过更详细来检查这一点。在您的示例中,打印x
始终会产生[1]
。这是因为当循环继续执行时,a
总是在添加,如下所示:
[2, 2, 2, ... [1], [0.9], [0.8], [0.7], [0.6]]
for循环永远不会真正跳转到下一个元素,因为这些值也会移动另一个元素。
希望这能帮到你!
答案 1 :(得分:1)
在循环内部,您在列表中插入当前正在循环处理的新项目。您必须将代码更改为如下所示
>>> result = []
>>> top_ports = [[1], [0.9], [0.8], [0.7], [0.6]]
>>> a = 2
>>> for x in top_ports:
... if a > x[0]:
... result.insert(0,a)
...