Python for循环xrange增量

时间:2016-03-22 20:40:55

标签: python loops

我的循环是;

for r in xrange(0,444):
    if(r == 5):
     r=r+4

但是r不是in循环的增量。那是什么问题?

3 个答案:

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