Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python是如何做到的;为了……在……中”;在环体中使用移除时工作?_Python_Loops_For Loop - Fatal编程技术网

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],它将打

在此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]
,它将打印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明白了,谢谢您提供的信息:-)