用range()反向打印列表?

521 投票
20 回答
710886 浏览
提问于 2025-04-17 01:16

你可以用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 稍微快一点。

撰写回答