Python:for循环和xrange()

时间:2015-06-29 15:38:10

标签: python python-2.7 for-loop repeat

我正在学习Python,我遇到了'for循环'的事情。假设我有一个程序要求5个数字。我知道这是毫无意义的,但这对一个例子来说是好的。无论如何,如果我这样做,它就不会重新开始它的循环。

myNumbers = []
for x in xrange(5):
    try:
        myNumbers.append( int(raw_input()) )
    except ValueError:
        myNumbers = []
        x = -1

我认为如果我将x重置为-1,它会让for循环继续运行,但它永远不会重启。它仍 5 次。我把-1放在那里的原因是因为x在此之后会重新计数到0。我试图找到解决方案,但没有。谢谢你,如果你试图帮助我。

1 个答案:

答案 0 :(得分:2)

xrange()(或range())被称为生成器函数,x类似于local variable,for循环将循环中的下一个值分配给。{/ p>

xrange()返回参数1中给出的范围内的值,for循环将该值赋给变量x。因此,即使您在循环中更改x的值,xrange()也不知道这样的更改,并且仍然会提供范围中的下一个值。

生成器函数示例 -

def myrange(a):
    i = 0
    while i < a:
        yield i
        i = i + 1

>>> for x in  myrange(10):
...     print(x)
...     x = 1
...
0
1
2
3
4
5
6
7
8
9

x中的值更改永远不会传播回range()xrange()函数。