我的循环是;
for r in xrange(0,444):
if(r == 5):
r=r+4
但是r不是in循环的增量。那是什么问题?
答案 0 :(得分:3)
在python中,这种类型的for循环不是C风格的同义词:
for(int r = 0; r < 444; ++r)
if (r==5)
r += 4;
相反,Python将此视为对象的集合。在for循环中,Python将看到:
for r in range(5):
as(基本上)
for r in [0, 1, 2, 3, 4]:
只要您更改r
,它就不会影响列表本身。它仅影响本地作用域r
,它将在下一次迭代期间被覆盖。如果你想这样做,你可以这样做:
r = 0
while r < 444:
if r == 5:
r += 4
r += 1
答案 1 :(得分:0)
因为每次都会通过xrange对象重新计算r变量。
答案 2 :(得分:0)
xrange由xrange定义(start,stop [,step])。见https://docs.python.org/2/library/functions.html#xrange。
你的代码没有定义步骤是使用step = 1,所以你的xrange本质上是一个整数0到443的列表。当你写:
for r in xrange(0,444):
您只提供一个变量名称&#34; r&#34;,以便在该项目期间关联该范围内的每个项目&#34;转向&#34;在迭代中。您提供的代码块:
for r in xrange(0,444):
if(r == 5):
r=r+4
要求迭代这个列表,当它达到5时,将r增加4,但是xrange对象已经构建,for语句将继续查看对象中的每个整数。
例如:
>>> for r in xrange(0, 10):
... if (r == 5):
... r = r + 4
... print r
...
0
1
2
3
4
9 # 5 is changed to 9 but the iteration continues with the next 'r' in the xrange
6
7
8
9
>>>