现在我知道在迭代循环期间修改列表是不安全的.但是,假设我有一个字符串列表,我想自己去除字符串.替换可变值是否算作修改?
l = range(100)
for i in l:
print i,
print l.pop(0),
print l.pop(0)
Run Code Online (Sandbox Code Playgroud)
上面的python代码给出了与预期完全不同的输出.我想循环遍历项目,以便我可以在循环时跳过项目.
请解释.
我有这段代码:
numbers = range(1, 50)
for i in numbers:
if i < 20:
numbers.remove(i)
print(numbers)
Run Code Online (Sandbox Code Playgroud)
但我得到的结果是:
[2,4,6,8,10,12,14,16,18,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35 ,36,37,38,39,40,41,42,43,44,45,46,47,48,49]
当然我希望结果中没有出现20以下的数字,我假设我在删除时做错了.
我正在尝试学习Python,我开始使用一些代码:
a = [3,4,5,6,7]
for b in a:
print a
a.pop(0)
Run Code Online (Sandbox Code Playgroud)
输出是:
[3, 4, 5, 6, 7]
[4, 5, 6, 7]
[5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
我知道在我循环的时候改变数据结构并不是一个好的做法,但我想了解Python在这种情况下如何管理迭代器.
主要问题是:如果我改变状态,它如何知道它必须完成循环a?