Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环范围增量的Python_Python_Loops - Fatal编程技术网

循环范围增量的Python

循环范围增量的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循环是

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
>>>