2016-09-04 20 views
0

我虽然比较的代码:无限,而在Python循环时,整数与范围

i=0 
    a = range(100) 
    while i < range(100): 
     print i 
     i += 9 

此进入一个无限循环......可我知道为什么吗?

是因为一个整数与列表进行比较? 但是当我变得大于99时会发生什么?

不应该它出来的while循环?

下面的代码工作正常预期:

i=0 
     a = range(100) 
     a_len = len(a) 
     while i < a_len: 
      print i 
      i += 9 

回答

8
在Python 2.x的

可悲的是,一个int总是小于list(即使该列表为空)。

>>> 9 < [] 
True 

要使用的range 3个参数的形式做什么让你有一个开始,一个停止一步,如:

for i in range(0, 100, 9): 
    print i 
0

range(100)是您应该迭代的从1到100的整数列表。所以,len(range(100) = 100.在Python 2.x中,列表总是大于一个整数。解决此问题的一个非常简单的方法是:

i=0 
while i < 100: # instead of range(100) 
    print i 
    i += 9