📜  Python | 生成器表达式(1)

📅  最后修改于: 2023-12-03 14:45:53.274000             🧑  作者: Mango

Python | 生成器表达式

在 Python 中,生成器表达式是一种生成迭代器对象的高效方式。它们类似于列表推导式,但不会同时将所有元素加载到内存中,而是在需要时逐个生成。

基本语法

生成器表达式的语法与列表推导式类似,但使用圆括号而不是方括号。

generator = (expression for item in iterable if condition)

其中,expression 是生成器内每个元素要计算的表达式,item 是 iterable 中每个元素的变量名,condition 是可选的筛选条件。

示例

我们来看一个例子,生成一个由 1 到 10 的整数的平方组成的列表(使用列表推导式和生成器表达式):

# 列表推导式
squares = [i ** 2 for i in range(1, 11)]
print(squares)

# 生成器表达式
squares_gen = (i ** 2 for i in range(1, 11))
print(list(squares_gen))

输出:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

可以看到,两种方法都得到了相同的结果。但是,生成器表达式只创建了一个生成器对象,而不是在内存中创建一个整个列表。

优势

与列表推导式相比,生成器表达式有以下优势:

  • 节省内存:生成器表达式执行时一次只生成一个值,而不是全部生成。对于大型数据集,这可以显著降低内存消耗。
  • 更快的执行速度:由于生成器表达式一次只计算一个值,所以对于大型数据集,它可以比列表推导式更快地执行。
总结

生成器表达式是 Python 中生成迭代器对象的高效方式。它们的优点包括节省内存和更快的执行速度。语法与列表推导式类似,但使用圆括号而不是方括号。