如何在Python中使用range()生成以下列表?
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
如何在Python中使用range()生成以下列表?
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
当前回答
除了可读性,反向(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
如果有人想知道的话:)
其他回答
使用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]
你不一定需要使用range函数,你可以简单地使用list[::-1],它应该以相反的顺序快速返回列表,而不使用任何添加。
for i in range(8, 0, -1)
将解决这个问题。它将输出8到1,而-1表示反向列表
range(9,-1,-1)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
你可以使用range(10)[::-1],它和range(9, -1, -1)是一样的,而且可以说可读性更强(如果你熟悉常见的序列[::-1]Python习语)。