【发布时间】:2017-04-19 18:38:41
【问题描述】:
如果你这样做列表理解:
squares = [x**2 for x in range(100000)]
这会占用大量内存,因此您可以使用生成器来做同样的事情:
squares = (x**2 for x in range(100000))
现在假设我想使用单行 for 循环来打印所有这些方块:
[print(square) for square in squares]
我的问题是:以这种方式打印是否会创建一个列表(看起来像是一个列表理解)?如果是这样,该列表是否存储在内存中? (如果是这样,那么在创建 squares 时使用生成器是没有意义的,因为无论如何它们都会存储在另一个列表中。)还有一件事:如果你这样做:
[1, 2, 3, 4, 5, 6]
如果不将其分配给任何变量,这些值是否会存储在内存中?
【问题讨论】:
标签: python list python-3.x memory generator