Python常见函数之生成式

Python常见函数之生成式

在Python中,生成式(Generator Expressions)是一种简洁的创建迭代器的方式,它们类似于列表推导式(List Comprehensions),但是生成式返回的是一个迭代器,而不是一个列表。这意味着生成式只会在迭代时生成值,而不是一次性生成所有值,从而节省了内存。

生成式的基本语法是使用圆括号 () 而不是方括号 [] 或花括号 {}(对于集合或字典推导式)。

下面是一些生成式的示例:

  1. 创建一个生成偶数(从0到18)的生成式:
1
2
3
even_numbers = (i for i in range(19) if i % 2 == 0)
for num in even_numbers:
print(num)
  1. 创建一个从字符串中提取大写字母的生成式:
1
2
3
4
text = "Hello, World!"
uppercase_letters = (char for char in text if char.isupper())
for letter in uppercase_letters:
print(letter)
  1. 创建一个生成斐波那契数列的生成式(注意:这只是一个简单的示例,因为生成式本身并不适合生成无限序列,但我们可以限制其长度):
1
2
3
4
5
6
7
8
9
def fibonacci(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b

fib_sequence = fibonacci(10) # 创建一个生成前10个斐波那契数的生成器
for num in fib_sequence:
print(num)

在这个斐波那契数列的例子中,我们实际上使用了一个生成器函数(通过yield关键字定义),但你也可以将其视为一个更复杂的生成式。在大多数情况下,如果你需要生成一个复杂的、可能是无限的序列,那么使用生成器函数会更为合适。

总的来说,生成式是Python中一种非常强大且内存高效的工具,用于在迭代时动态生成值。


Python常见函数之生成式
https://dreamshao.github.io/2024/06/28/python生成式/
作者
Yun Shao
发布于
2024年6月28日
许可协议