如何在Python中使用range()生成以下列表?
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
如何在Python中使用range()生成以下列表?
[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版本在回答这个问题时是稳定的。
其他回答
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(9,-1,-1)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
你不一定需要使用range函数,你可以简单地使用list[::-1],它应该以相反的顺序快速返回列表,而不使用任何添加。
获取对给定输入整数进行反转的反向输出。 例子 输入:5
答案应该是:
54321
1234
321
12
1
答案是:
def get_val(n):
d = ''.join(str(i) for i in range(n, 0, -1))
print(d)
print(d[::-1][:-1])
if n - 1>1:
return get_vale(n-1)
get_val(12)