很抱歉,以前是否有人问过这个,但我找不到类似的地方。
在python中,我需要弹出一些项目以耗尽列表。
我写了以下内容以了解一些逻辑,但我不明白发生了什么。
我希望for循环可以迭代列表中的每个项目并相应地弹出每个项目。
但是,当我运行以下命令时,它仅弹出for file in **_samename_stillsame/; do
#extract portion of the name as e.g., $date
cp filename.png "$date".png
索引:odd
,而[1, 3, 5, 7, 9]
仍然保留even
[2, 4, 6, 8, 10]
我设法通过使用l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for code in l:
l.pop(l.index(code))
print(l) # [2, 4, 6, 8, 10]
循环来完成工作:
while
在这种情况下,为什么l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
while l:
for code in l:
l.pop(l.index(code))
print(l) # []
循环仅弹出奇数索引?
答案 0 :(得分:1)
for item in list
命令创建一个临时索引列表(也可能具有步长),该列表保持静态,并且在Python循环执行期间无法更改。因此,indices = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
永久停留。当您在每次迭代中弹出后迭代其余元素时,尽管列表已完全更改,但索引不会更改。
您可以使用while
循环来完成此操作,因为它可以迭代地工作直到清空整个列表。下面所示的while循环的各个迭代之后的值证实,每个for循环仅删除奇数元素。
[2, 4, 6, 8, 10]
[4, 8]
[8]
[]
在for
循环中,Python不会考虑对其迭代值所做的更改。