循环范围增量的Python
我的for循环是循环范围增量的Python,python,loops,Python,Loops,我的for循环是 for r in xrange(0,444): if(r == 5): r=r+4 但r不是in循环的增量。这是什么问题?在python中,这种类型的for循环与C风格不是同义词: for(int r = 0; r < 444; ++r) if (r==5) r += 4; 作为(基本上) 无论何时更改r,都不会影响列表本身。它只影响本地范围的对象r,该对象将在下一次迭代中被覆盖。如果您想这样做,您可以: r = 0 whil
for r in xrange(0,444):
if(r == 5):
r=r+4
但r不是in循环的增量。这是什么问题?在python中,这种类型的for循环与C风格不是同义词:
for(int r = 0; r < 444; ++r)
if (r==5)
r += 4;
作为(基本上)
无论何时更改r
,都不会影响列表本身。它只影响本地范围的对象r
,该对象将在下一次迭代中被覆盖。如果您想这样做,您可以:
r = 0
while r < 444:
if r == 5:
r += 4
r += 1
r=0
当r<444时:
如果r==5:
r+=4
r+=1
因为每次r变量都由xrange对象重新计算。xrange由xrange定义(开始、停止[、步骤])。看
不定义step的代码使用的是step=1,因此xrange本质上是一个0到443的整数列表。当你写作时:
for r in xrange(0,444):
您只提供了一个变量名“r”,以便在迭代中项目“转动”期间与范围中的每个项目关联。您提供的代码块:
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
>>>
我不确定,他问他的代码出了什么问题,但相反,你提出了另一种方法,当r=5时,第四种解决方案是错误的,当你跨过数字6Fixed。它应该跳过6-9你想用这个语句做什么?
for r in xrange(0,444):
if(r == 5):
r=r+4
>>> 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
>>>