在Python中使用索引向后循环?

我想从100循环到0.我如何在Python中做到这一点?

for i in range (100,0)不起作用。

尝试range(100,-1,-1) ,第三个参数是要使用的增量(logging在这里 )。

在我看来,这是最可读的:

 for i in reversed(xrange(101)): print i, 
 for i in range(100, -1, -1) 

和一些稍长(和较慢)的解决scheme:

 for i in reversed(range(101)) for i in range(101)[::-1] 

通常在Python中,可以使用负指标从后面开始:

 numbers = [10, 20, 30, 40, 50] for i in xrange(len(numbers)): print numbers[-i - 1] 

结果:

 50 40 30 20 10 

另一个scheme

 z = 10 for x in range (z): y = zx print y 

结果:

 10 9 8 7 6 5 4 3 2 1 

提示:如果您使用此方法计算列表中的索引,则需要从“y”值为-1,因为列表索引将从0开始。

简短而甜蜜。 这是我在做codeAcademy课程时的解决scheme。 按照rev的顺序打印一个string。

 def reverse(text): string = "" for i in range(len(text)-1,-1,-1): string += text[i] return string 

for var in range(10,-1,-1)作品

为什么你的代码不工作

你代码for i in range (100, 0)是好的, 除了

第三个参数( step )默认为+1 。 所以你必须指定range()的第三个参数为-1来退后一步。

 for i in range(100, -1, -1): print(i) 

注:这包括100&0在输出。

有多种方式。

更好的方法

对于pythonic方式,请检查PEP 0322 。

这是Python3 pythonic示例从100打印到0(包括100&0)。

 for i in reversed(range(101)): print(i) 

你总是可以增加范围,从你的情况100 - i减去一个variables100 - i i in range( 0, 101 )

 for i in range( 0, 101 ): print 100 - i 

我在codeacademy练习之一中尝试了这个(在string中反转字符而不使用反转也不是-1)

 def reverse(text): chars= [] l = len(text) last = l-1 for i in range (l): chars.append(text[last]) last-=1 result= "" for c in chars: result += c return result print reverse('hola') 
 a = 10 for i in sorted(range(a), reverse=True): print i