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

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

当前回答

使用reverse没有意义,因为range函数可以返回反向列表。

当你迭代n个项目,想要替换range(start, stop, step)返回的列表顺序时,你必须使用range中标识step的第三个参数,并将其设置为-1,其他参数也需要相应调整:

提供stop参数为-1(它之前的stop -1值,stop等于0)。 作为开始参数使用n-1。

因此,range(n)的倒序等价为:

n = 10
print range(n-1,-1,-1) 
#[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

其他回答

使用reverse没有意义,因为range函数可以返回反向列表。

当你迭代n个项目,想要替换range(start, stop, step)返回的列表顺序时,你必须使用range中标识step的第三个参数,并将其设置为-1,其他参数也需要相应调整:

提供stop参数为-1(它之前的stop -1值,stop等于0)。 作为开始参数使用n-1。

因此,range(n)的倒序等价为:

n = 10
print range(n-1,-1,-1) 
#[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

对于那些对目前收集到的选项的“效率”感兴趣的人……

Jaime RGP的回答让我重新启动了我的电脑,在计时之后,詹森按照我自己的建议(通过评论)进行了一些“具有挑战性”的解决方案。为了避免你的好奇心,我在这里列出了我的结果(最差的第一):[1]

Jason的回答(也许只是对列表理解能力的一次探索):

$ python -m timeit "[9-i for i in range(10)]"
1000000 loops, best of 3: 1.54 usec per loop

马蒂诺的回答(如果你熟悉扩展切片语法,可以读懂):

$ python -m timeit "range(10)[::-1]"
1000000 loops, best of 3: 0.743 usec per loop

michakovsky Šrajer的回答(公认的答案,非常有可读性):

$ python -m timeit "reversed(range(10))"
1000000 loops, best of 3: 0.538 usec per loop

Bene的回答(第一个,但在当时非常粗略):

$ python -m timeit "range(9,-1,-1)"
1000000 loops, best of 3: 0.401 usec per loop

最后一个选项很容易记住,使用Val Neekman的范围(n-1,-1,-1)表示法。


正如Karl Knechtel所评论的,这里给出的结果是依赖于版本的,并参考Python 3。X版本在回答这个问题时是稳定的。

假设你有一个列表,叫它 a = {1, 2, 3, 4, 5} 现在,如果你想反向打印列表,那么只需使用下面的代码。

a.reverse
for i in a:
   print(i)

我知道你问使用范围,但它已经回答了。

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!")