如何在Python中使用range()生成以下列表?

[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

当前回答

我相信这有帮助,

range(5)[::-1]

用法如下:

for i in range(5)[::-1]:
    print i 

其他回答

你不一定需要使用range函数,你可以简单地使用list[::-1],它应该以相反的顺序快速返回列表,而不使用任何添加。

使用reverse没有意义,因为range函数可以返回反向列表。

当你迭代n个项目,想要替换range(start, stop, step)返回的列表顺序时,你必须使用range中标识step的第三个参数,并将其设置为-1,其他参数也需要相应调整:

提供stop参数为-1(它之前的stop -1值,stop等于0)。 作为开始参数使用n-1。

因此,range(n)的倒序等价为:

n = 10
print range(n-1,-1,-1) 
#[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
range(9,-1,-1)
[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)
    

在python3中经常被问到的问题是range(9, -1, -1)是否比reverse (range(10))更好?在其他语言中使用迭代器的人立即倾向于认为reversed()必须缓存所有值,然后以相反的顺序返回。问题是,如果对象只是一个迭代器,Python的reversed()操作符就不起作用。对象必须具有以下两个中的一个才能使reversed()工作:

通过[]支持len()和整型索引 或者实现__reversed__()方法。

如果你尝试在一个以上都没有的对象上使用reversed(),那么你会得到:

>>> [reversed((x for x in range(10)))]
TypeError: 'generator' object is not reversible

所以简而言之,Python的reversed()只意味着对数组这样的对象,所以它应该具有与前向迭代相同的性能。

但是range()呢?那不是发电机吗?在python3中,它是生成器,但包装在实现上述两种方法的类中。因此range(100000)不会占用大量内存,但它仍然支持高效的索引和倒序。

因此,总的来说,您可以使用reversed(range(10))而不会对性能造成任何影响。