如何在Python中使用range()生成以下列表?
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
如何在Python中使用range()生成以下列表?
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
当前回答
使用reversed()函数:
reversed(range(10))
这更有意义。
更新:
如果你想让它是一个列表(正如btk指出的那样):
list(reversed(range(10)))
更新:
如果您希望仅使用range来实现相同的结果,则可以使用它的所有参数。范围(开始,停止,步长)
例如,要生成一个列表[5,4,3,2,1,0],您可以使用以下命令:
range(5, -1, -1)
这可能不太直观,但正如评论所提到的,这是更有效的,并且是反转列表的正确使用范围。
其他回答
[9-i for i in range(10)]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
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索引中有一个对象,这是错误的。
你可以使用range(10)[::-1],它和range(9, -1, -1)是一样的,而且可以说可读性更强(如果你熟悉常见的序列[::-1]Python习语)。
你不一定需要使用range函数,你可以简单地使用list[::-1],它应该以相反的顺序快速返回列表,而不使用任何添加。
因为range(n)生成了一个可迭代对象,所以你可以做各种各样的事情来产生你想要的结果,比如:
range(n)[::-1]
如果循环没问题,我们可以创建一个队列:
a = []
for i in range(n):
a.insert(0,a)
return a
或者可以使用reverse()方法:
reverse(range(n))