如何在Python中使用range()生成以下列表?

[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

当前回答

for i in range(8, 0, -1)

将解决这个问题。它将输出8到1,而-1表示反向列表

其他回答

不带[::-1]或颠倒-的

def reverse(text):
    result = []
    for index in range(len(text)-1,-1,-1):
        c = text[index]
        result.append(c)
    return ''.join(result)

print reverse("python!")
range(9,-1,-1)
    [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

是正确的形式。如果你使用

reversed(range(10))

你不会得到0的情况。例如,假设你的10不是一个神奇的数字,也不是一个你用来反向查找的变量。如果你的n case是0,则反转(range(0))将不会执行,如果你碰巧在0索引中有一个对象,这是错误的。

for i in range(8, 0, -1)

将解决这个问题。它将输出8到1,而-1表示反向列表

除了可读性,反向(range(n))似乎比range(n)[::-1]更快。

$ python -m timeit "reversed(range(1000000000))"
1000000 loops, best of 3: 0.598 usec per loop
$ python -m timeit "range(1000000000)[::-1]"
1000000 loops, best of 3: 0.945 usec per loop

如果有人想知道的话:)

因为range(n)生成了一个可迭代对象,所以你可以做各种各样的事情来产生你想要的结果,比如:

range(n)[::-1]

如果循环没问题,我们可以创建一个队列:

a = []
for i in range(n):
    a.insert(0,a)
return a

或者可以使用reverse()方法:

reverse(range(n))