如何在Python中使用range()生成以下列表?
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
如何在Python中使用range()生成以下列表?
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
当前回答
获取对给定输入整数进行反转的反向输出。 例子 输入: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)
其他回答
使用'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生成器)转换为列表。
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索引中有一个对象,这是错误的。
[9-i for i in range(10)]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
这个问题中的需求需要一个降序为10的整数列表 秩序。那么,让我们用python生成一个列表。
# This meets the requirement.
# But it is a bit harder to wrap one's head around this. right?
>>> range(10-1, -1, -1)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
# let's find something that is a bit more self-explanatory. Sounds good?
# ----------------------------------------------------
# This returns a list in ascending order.
# Opposite of what the requirement called for.
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# This returns an iterator in descending order.
# Doesn't meet the requirement as it is not a list.
>>> reversed(range(10))
<listreverseiterator object at 0x10e14e090>
# This returns a list in descending order and meets the requirement
>>> list(reversed(range(10)))
[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
如果有人想知道的话:)