用range()反向打印列表?
你可以用Python里的range()
函数来生成下面这个列表。这个函数可以帮助你创建一系列的数字。
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
20 个回答
62
你可以使用 range(10)[::-1]
这个写法,它的意思和 range(9, -1, -1)
是一样的。其实前者可能更容易理解一些,特别是如果你知道在Python中用 sequence[::-1]
这个方式来反转序列的话。
369
使用内置的 'range' 函数。它的格式是 range(start, stop, step)
。这个函数会生成一系列数字,从 start
开始,一直到 stop
之前的数字,也就是说 stop
不会被包括在内。
>>> range(9,-1,-1)
range(9, -1, -1)
>>> list(range(9,-1,-1))
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> list(range(-2, 6, 2))
[-2, 0, 2, 4]
列表构造器可以把 range(这是一个 Python 的生成器)转换成一个列表。
804
使用 reversed()
函数(效率高,因为 range
实现了 __reversed__
):
reversed(range(10))
这样做更有意义。
更新: list
转换
如果你想把结果变成一个 list
(正如 @btk 提到的):
list(reversed(range(10)))
更新: 仅使用 range
的解决方案
如果你只想用 range
来达到同样的效果,可以使用它的所有参数。 range(start, stop, step)
比如,要生成一个列表 [3, 2, 1, 0]
,你可以这样写:
range(3, -1, -1)
这可能不太直观,但效果和之前一样,而且代码更简洁。 @Wolf 的这个回答 表示这种方法比 reversed
稍微快一点。