在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