Python中[range(1,11)]与list(range(1,11))的区别是什么
[range(1, 11)]和list(range(1, 11))的差异 Python 3中range()返回的是惰性可迭代对象,不会一次性生成所有目标数值,仅在迭代时才会按需生成对应数值,这种设计可以极大节省大序列场景下的内存开销。两种写法的区别具体如下:
- 写法1:
numbers = [range(1, 11)]
方括号[]是直接定义列表的语法,这里是把完整的range对象作为唯一元素放进了列表,最终得到的是长度为1的列表,结构为[range(1, 11)],不存在单个的数值元素,完全不符合习题要求。 - 写法2:
numbers = list(range(1, 11))list()是Python内置的列表构造器,会自动遍历传入的可迭代对象(这里就是range实例),把每次迭代生成的数值依次存入新列表,最终得到的是长度为10的列表[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],完全满足习题的要求。
额外补充:如果习题只是要求遍历1到100万做运算,不需要单独存储所有数值的话,直接用for i in range(1, 1000001)即可,不需要转成列表,能节省大量内存。
内容的提问来源于stack exchange,提问作者fartface87
相关产品推荐
相关产品推荐

