Python生成器(Generator)详解
什么是生成器?
Python中的生成器是一种特殊的迭代器,使用关键字yield
来生成下一个值。与常规函数不同的是,当函数执行到yield
语句时,函数会暂停并保存当前的状态,并产生一个值作为返回结果。下次调用该函数时,会从上一次暂停的地方继续执行。因此,生成器可以有效地节省内存,适用于处理大量数据。
使用生成器可以用for
循环来迭代数据,例如:
def count_up_to(n):
i = 1
while i <= n:
yield i
i += 1
for num in count_up_to(5):
print(num)
以上代码将会输出:
1
2
3
4
5
此外,生成器还可以用于生成无限大的数据集合,例如:
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
def primes():
num = 2
while True:
if is_prime(num):
yield num
num += 1
for p in primes():
if p > 100:
break
print(p)
以上代码将会输出前100个素数。
生成器表达式
生成器表达式是一种简单的生成器语法,可以快速生成数据集合。与列表推导式类似,生成器表达式使用( )
括起来,同时yield
关键字可以省略。
例如,生成器表达式可以生成一个由字符串长度组成的列表:
str_list = ['hello', 'world', 'python', 'generator']
len_generator = (len(s) for s in str_list)
print(list(len_generator)) # 输出[5, 5, 6, 9]
总结
生成器是Python中非常强大和实用的特性,通过yield
实现延迟计算,可以大大节省内存和提高性能。同时,生成器还可以用于处理无限大的数据集合。
以上是Python生成器的详解,包含了生成器的定义、用法、示例代码和生成器表达式。希望能对大家有帮助。