为什么下面的简单循环没有保存i
在循环的末尾?
for i in range( 1, 10 ):
print i
i = i + 3
以上打印:
1
2
3
4
5
6
7
8
9
但它应该打印:
1
4
7
for
sets i
每次迭代,到被迭代对象的下一个值。无论你设置什么i
此时循环中的 to 被忽略。
来自for声明文件 https://docs.python.org/2/reference/compound_stmts.html#the-for-statement:
然后,针对迭代器提供的每个项目,按照索引升序执行该套件一次。使用标准分配规则将每个项目依次分配到目标列表,然后执行套件。
i
是这里的目标列表,因此它被分配了来自range(1, 10)
目的。环境i
稍后做其他事情不会改变什么range(1, 10)
表达产生。
如果你想产生一个循环,你可以改变i
, use a while
改为循环;它每次都会通过以下方式重新测试条件:
i = 1
while i < 10:
print i
i += 3
但使用a会更容易range()
一步步产生值up front:
for i in range(1, 10, 3):
print i
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)