如何不使用for循环获取Python中range对象的值?
关于Python中range对象直接取值的方法
range是Python里的惰性序列,它不会预先生成所有元素,所以确实没有像dict.values()那样直接返回全部值的方法,但有几种不用手动写列表推导式的方式获取所有元素:
用内置
list()函数直接转换:list(range(10)) # 输出: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]这是最常用的方式,底层虽然也是迭代,但不需要你手动写循环逻辑,Python内置函数帮你完成了迭代过程。
Python 3.10及以上版本,可以用
*解包语法快速生成列表:[*range(10)] # 输出同样是 [0, 1, 2, ..., 9]这是一种语法糖,效果和
list()一致,写法更简洁。
需要注意的是,range的惰性设计是为了节省内存,比如处理range(10**8)这种超大区间时,直接转列表会占用巨量内存。如果不是必须要所有元素,尽量保持range对象的惰性使用更高效。
内容的提问来源于stack exchange,提问作者LetMeSOThat4U
相关产品推荐
相关产品推荐

