为什么以下简单循环不保存循环i结束时的值?
for i in range( 1, 10 ):
print i
i = i + 3
Run Code Online (Sandbox Code Playgroud)
以上打印:
1
2
3
4
5
6
7
8
9
Run Code Online (Sandbox Code Playgroud)
但它应该打印:
1
4
7
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 41
for 将 i每次迭代设置为迭代对象的下一个值.无论你i在循环中设置什么,都会被忽略.
从for声明文件:
然后,对于迭代器提供的每个项,按升序索引的顺序执行一次该套件.依次使用标准的分配规则将每个项目分配给目标列表,然后执行该套件.
i是这里的目标列表,因此它从range(1, 10)对象中分配了每个值.i稍后设置为其他内容不会改变range(1, 10)表达式生成的内容.
如果要生成一个可以改变的循环,请i改用while循环; 它每次重新测试条件:
i = 1
while i < 10:
print i
i += 3
Run Code Online (Sandbox Code Playgroud)
但它会更容易,只需使用一个range()带有台阶,生产值前面:
for i in range(1, 10, 3):
print i
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1319 次 |
| 最近记录: |