bha*_*nsa 2 python iteration loops range python-2.7
>>> k = 8
>>> for i in range(k):
print i
k -= 3
print k
Run Code Online (Sandbox Code Playgroud)
上面是打印数字的代码,0-7如果我只print i在 for 循环中使用。
我想了解上面的代码是如何工作的,有什么方法可以更新使用的变量的值,range(variable)以便它以不同的方式迭代。
还有为什么它总是迭代到初始k值,为什么值不更新。
我知道这是一个愚蠢的问题,但欢迎所有想法和评论。
范围生成后无法更改。在Python 2,range(k)将整数列表从0到K,像这样:[0, 1, 2, 3, 4, 5, 6, 7]。k列表生成后更改将无济于事。
如果要更改要迭代的数字,可以使用 while 循环,如下所示:
k = 8
i = 0
while i < k:
print i
k -= 3
i += 1
Run Code Online (Sandbox Code Playgroud)
该表达式range(k)仅计算一次,而不是每次迭代。你不能设置k并期望range(k)结果改变,不。从for声明文档:
表达式列表被评估一次;它应该产生一个可迭代的对象。
您可以使用while循环来代替:
i = 0
k = 8
while i < k:
print i
i += 1
k -= 3
Run Code Online (Sandbox Code Playgroud)
循环while确实会在每次迭代时重新评估测试。参考while声明文档:
这会重复测试表达式,如果为真,则执行第一个套件