受内存限制,列表生成式创建的列表的容量肯定有限的
不仅占用很大的存储空间,如果我们仅仅需要访问前几个元素,那后面绝大多数元素占用的空间都白白浪费了
什么是生成器
若列表元素可以按照某种算法算出来,就可以在循环的过程中不断推算出后续需要用的元素,而不必创建完整的 list,从而节省大量的空间
边循环边计算的机制,叫生成器(generator)
最简单的生成器
L = [x * x for x in range(10)] print(L) print(type(L)) L = (x * x for x in range(10)) print(L) print(type(L)) # 输出结果 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] <class 'list'> <generator object <genexpr> at 0x000001D607541EB8> <class 'generator'>