Python 2.7 对于list和list.insert中的x,插入会导致无限循环

Python 2.7 对于list和list.insert中的x,插入会导致无限循环,python-2.7,Python 2.7,我不知道这是否是一个bug,但为什么这会导致一个无休止的循环 >>> 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) ... 在循环中,您将在当前正在循环处理的列表中插入新项目。。您必须将代码更改为如下所示

我不知道这是否是一个bug,但为什么这会导致一个无休止的循环

>>> 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)
... 

在循环中,您将在当前正在循环处理的列表中插入新项目。。您必须将代码更改为如下所示

>>> 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)
... 

在循环中,您将在当前正在循环处理的列表中插入新项目。。您必须将代码更改为如下所示

>>> 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)
... 

在循环中,您将在当前正在循环处理的列表中插入新项目。。您必须将代码更改为如下所示

>>> 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)
... 

在循环中,您将在当前正在循环处理的列表中插入新项目。。您必须将代码更改为如下所示

>>> 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)
... 

x
表示
top\u端口中的迭代元素
。但是当
a>x[0]
true
时,将向
顶部端口添加一个元素:

top_ports.insert(0,a)
因此,由于顶部端口的长度不断增加,for循环永远不会终止

你也可以更详细地检查这一点。在您的示例中,打印
x
始终会产生
[1]
。这是因为当循环继续执行时,
a
总是在添加,如下所示:

[2, 2, 2, ... [1], [0.9], [0.8], [0.7], [0.6]]
for循环永远无法真正跳转到下一个元素,因为这些值还会将另一个元素移开


希望这对你有帮助

x
表示
top\u端口中的迭代元素。但是当
a>x[0]
true
时,将向
顶部端口添加一个元素:

top_ports.insert(0,a)
因此,由于顶部端口的长度不断增加,for循环永远不会终止

你也可以更详细地检查这一点。在您的示例中,打印
x
始终会产生
[1]
。这是因为当循环继续执行时,
a
总是在添加,如下所示:

[2, 2, 2, ... [1], [0.9], [0.8], [0.7], [0.6]]
for循环永远无法真正跳转到下一个元素,因为这些值还会将另一个元素移开


希望这对你有帮助

x
表示
top\u端口中的迭代元素。但是当
a>x[0]
true
时,将向
顶部端口添加一个元素:

top_ports.insert(0,a)
因此,由于顶部端口的长度不断增加,for循环永远不会终止

你也可以更详细地检查这一点。在您的示例中,打印
x
始终会产生
[1]
。这是因为当循环继续执行时,
a
总是在添加,如下所示:

[2, 2, 2, ... [1], [0.9], [0.8], [0.7], [0.6]]
for循环永远无法真正跳转到下一个元素,因为这些值还会将另一个元素移开


希望这对你有帮助

x
表示
top\u端口中的迭代元素。但是当
a>x[0]
true
时,将向
顶部端口添加一个元素:

top_ports.insert(0,a)
因此,由于顶部端口的长度不断增加,for循环永远不会终止

你也可以更详细地检查这一点。在您的示例中,打印
x
始终会产生
[1]
。这是因为当循环继续执行时,
a
总是在添加,如下所示:

[2, 2, 2, ... [1], [0.9], [0.8], [0.7], [0.6]]
for循环永远无法真正跳转到下一个元素,因为这些值还会将另一个元素移开


希望这对你有帮助

打印x
,您将知道原因。顺便说一句,你想做什么?
print x
,你会知道原因的。顺便说一句,你想做什么?
print x
,你会知道原因的。顺便说一句,你想做什么?
print x
,你会知道原因的。顺便说一句,你想做什么?