📅  最后修改于: 2023-12-03 14:45:53.274000             🧑  作者: Mango
在 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 中生成迭代器对象的高效方式。它们的优点包括节省内存和更快的执行速度。语法与列表推导式类似,但使用圆括号而不是方括号。