【发布时间】:2019-04-02 23:56:20
【问题描述】:
H=[1,2,3,4,5,6,7,8]
for h in H:
print h
if h%2==1:
H.remove(h)
print H
输出:
1
[2, 3, 4, 5, 6, 7, 8]
3
[2, 4, 5, 6, 7, 8]
5
[2, 4, 6, 7, 8]
7
[2, 4, 6, 8]
所以,我只是在试验在同一个列表上的 for 循环内修改列表的可能性,虽然列表本身的行为就像我想的那样,但我不明白为什么数字 2、4、6、8没有被打印。谁能解释一下?
【问题讨论】:
-
在您的输出中
[2, 4, 6, 8]是 打印...我误解了您的问题吗? -
修改您正在循环的列表是不好的做法
-
@aws_apprentice 我以前做过,但我通常反过来做,这样索引就不会弄乱了。这有点乱,但肯定是可行的!
-
这是一个糟糕的论点,仅仅因为你可以在python中做某事并不意味着它是正确或推荐 i> 方法
-
如果您在迭代列表时故意尝试修改列表,最好的办法是在列表索引单调前进时撤消删除元素的效果。因此,当您删除一个元素时,请尝试将索引减 1。当然,这意味着您必须使用
enumerate()来生成索引以及元素。
标签: python python-2.7 list for-loop