python是如何做到的;为了……在……中”;在环体中使用移除时工作?
在此Python代码片段中:python是如何做到的;为了……在……中”;在环体中使用移除时工作?,python,loops,for-loop,Python,Loops,For Loop,在此Python代码片段中: l = [10,20,30,40,50] for i in l: l.remove(i) print(i) print(l) 输出为: 10 30 50 [20, 40] Python中的这种行为需要我几个小时来调试。 “for…in…”实际上是如何工作的?代码中的“i”取l列表中每个元素的值。因此,在l中为i键入,i将首先成为第一个索引,在本例中为10,然后执行下面的代码,这将从列表中删除i,因此现在您的列表是[20,30,40,50],它将打
l = [10,20,30,40,50]
for i in l:
l.remove(i)
print(i)
print(l)
输出为:
10
30
50
[20, 40]
Python中的这种行为需要我几个小时来调试。
“for…in…”实际上是如何工作的?代码中的“i”取l列表中每个元素的值。因此,在l中为i键入
,i将首先成为第一个索引,在本例中为10,然后执行下面的代码,这将从列表中删除i,因此现在您的列表是[20,30,40,50]
,它将打印i。。那是10。然后它跳到下一个索引l[1],该索引现在为30并执行代码。代码中的“i”取l列表中每个元素的值。因此,在l中为i键入,i将首先成为第一个索引,在本例中为10,然后执行下面的代码,这将从列表中删除i,因此现在您的列表是[20,30,40,50]
,它将打印i。。那是10。然后它跳到下一个索引l[1],现在是30并执行代码。正如@A.Lau所提到的,在for
循环的第二次迭代中,i
将被索引为l
的第二个元素,因此l[1]=30
将被分配给i
如果确实要删除for循环中的元素,可以尝试以下操作:
l = [10,20,30,40,50]
for i in l[:]:
l.remove(i)
print(i)
print(l)
结果将是:
10
20
30
40
50
[]
正如@A.Lau所提到的,在for
循环的第二次迭代中,i
将被索引为l
的第二个元素,因此l[1]=30
将被分配给i
如果确实要删除for循环中的元素,可以尝试以下操作:
l = [10,20,30,40,50]
for i in l[:]:
l.remove(i)
print(i)
print(l)
结果将是:
10
20
30
40
50
[]
我认为它使用了一个内部索引器,所以当你开始索引0时,它会跳到1,依此类推,但是因为你也在从数组中删除内容,l[1]最初是20,但现在是30,所以最终结果就是你得到的。这只是一个猜测,因为我不是python的专业人士。这可能会有所帮助:还有一个:你做过任何研究吗?Google有什么吗?我认为它使用了一个内部索引器,所以当你开始索引0时,它会跳到1,依此类推,但由于你也在从数组中删除内容,l[1]最初是20,但现在是30,所以最终结果就是你得到的。这只是一个猜测,因为我不是python的专业人士。这可能会有所帮助:还有一个:你做过任何研究吗?谷歌有什么吗?请注意,虽然CPython的行为确实是这样,但这种行为可能没有明确说明,不应依赖。今后,请将重复的问题标记为结束,而不是回答它们,由于后者增加了碎片,使网站更难导航。请注意,虽然CPython的行为确实如此,但该行为可能未指定,不应依赖。今后,请将重复的问题标记为关闭,而不是回答这些问题,因为后者增加了碎片,使网站更难导航。将来,请标记重复的问题以关闭,而不是回答这些问题,因为后者增加了碎片,使网站更难导航。@TigerhawkT3得到了它,感谢您提供的信息:-)将来,请将重复的问题标记为关闭,而不是回答这些问题,因为后者会增加碎片并使网站更难导航。@TigerhawkT3明白了,谢谢您提供的信息:-)