![]() |
1
31
在Python中,这是一个有良好文档记录的行为,您不应该修改正在迭代的列表。试试这个:
这个
|
![]() |
2
11
当您删除一个元素,并且for循环进入下一个索引时,您将跳过一个元素。 向后做。或者请说明你真正的问题。 |
![]() |
3
4
从广义上讲,我认为当你写作时:
在引擎盖下,python正在做这样的事情:
如果插入
基本上,python使用移动指针遍历列表。指针从指向第一个元素开始。然后移除第一个元素,从而使 第二 元素新的第一个元素。然后指针移动到新的第二个“先前的第三个”元素。等等。(如果使用[1,2,3,4,5]而不是[1,2,2,2,2]作为示例列表,可能会更清楚) |
![]() |
4
3
为什么不使用:
这可能是因为您更改了正在迭代的相同数组。 如果你想用自己的方式清除阵列,试试克里斯·杰斯特·杨的回答。 |
![]() |
5
2
我知道这是一篇老文章,有一个公认的答案,但对于那些可能还会出现的人… 前面的一些答案表明,在迭代过程中更改iterable是一个坏主意。但作为强调正在发生的事情的一种方式…
希望视觉效果有助于澄清。 |
![]() |
6
1
我同意约翰·福伊关于休息条件的看法。正如ChrisJester Young建议的那样,遍历列表的副本对remove()方法有效。但是,如果需要pop()特定的项,那么反向迭代可以工作,正如erik所提到的,在这种情况下,操作可以就地完成。例如:
|
![]() |
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
![]() |
shekharsabale · 从列表元素捕获子字符串 2 年前 |
![]() |
The Great · 拆分并存储数据帧,但名称基于特定列中的唯一值 2 年前 |
![]() |
Klimt865 · Python中的列表列表 2 年前 |
![]() |
Klimt865 · 在Python中将数组列表转换为列表列表 2 年前 |