我试着从100循环到0。在Python中如何做到这一点?

I在(100,0)范围内不成立。


有关为什么range以这种方式工作的讨论,请参见为什么slice和range是独占的?


当前回答

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

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

结果:

50
40
30
20
10

其他回答

我想同时对两个列表进行反向循环,所以我需要负下标。这是我的解决方案:

a= [1,3,4,5,2]
for i in range(-1, -len(a), -1):
    print(i, a[i])

结果:

-1 2
-2 5
-3 4
-4 3
-5 1

为什么你的代码不能工作

你在(100,0)范围内为i编码是可以的,除了

第三个参数(step)默认为+1。因此,您必须将range()的第三个参数指定为-1以后退。

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

注意:这包括输出中的100和0。

有多种方法。

更好的方法

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

这是一个Python3的python示例,从100到0(包括100 & 0)打印。

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

你也可以在python中创建一个自定义的反向机制。哪可以使用任何地方循环一个可迭代向后

class Reverse:
    """Iterator for looping over a sequence backwards"""
    def __init__(self, seq):
        self.seq = seq
        self.index = len(seq)

    def __iter__(self):
        return self

    def __next__(self):
        if self.index == 0:
            raise StopIteration
        self.index -= 1
        return self.seq[self.index]


>>> d = [1,2,3,4,5]
>>> for i in Reverse(d):
...   print(i)
... 
5
4
3
2
1
a = 10
for i in sorted(range(a), reverse=True):
    print i

你可能想在python中使用反转函数。 在我们进入代码之前,我们必须记住范围 function总是返回一个列表(或者一个我不知道的元组),因此range(5)将返回[0,1,2,3,4]。反转函数反转列表或元组,因此reversed(range(5))将为[4,3,2,1,0],因此您的解决方案可能是:

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