列表推导(List Comprehensions)和生成器表达式(Generator Expressions)在 Python 中有着相似的语法,但它们的行为和用途有所不同。以下是两者之间的主要区别:
1. 内存使用
列表推导:创建一个完整的列表,所有元素都会被立即计算并存储在内存中。
squares_list = [x**2 for x in range(10)] # 创建一个包含10个元素的列表
print(squares_list) # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
生成器表达式:返回一个生成器对象,它不会立即计算所有元素,而是在需要时逐个生成元素。这意味着它占用较少的内存,特别适用于处理非常大的数据集。
squares_gen = (x**2 for x in range(10)) # 创建一个生成器对象
for square in squares_gen:
print(square, end=' ') # 输出: 0 1 4 9 16 25 36 49 64 81
2. 执行时机
列表推导:所有元素会在创建列表时立即计算出来。
squares_list = [x*
标签:10,推导,Python,list,生成器,列表,squares
From: https://blog.csdn.net/wjianwei666/article/details/145257915