Python中的生成器是一种特殊的函数,可以通过yield语句将结果逐一返回给调用者,而不是一次性返回整个结果集。生成器因其惰性计算的特性,可以处理大量数据而不会一次性占用太多内存。
def fibonacci():
a,b = 0,1
while True:
yield b
a,b = b,a + b
f = fibonacci()
for i in range(10):
print(next(f))
上面的例子中,生成器fibonacci()通过yield语句逐一返回斐波那契数列的每一项,而不是将整个数列一次性返回。调用者在for循环中通过next()函数获取下一项,每次只会占用一项的内存。
生成器可以用于实现协程、惰性序列等用途,可以通过条件和循环结构来控制生成器的推导过程。
def filter_numbers(n,generator):
for i in generator:
if i % n == 0:
yield i
gen = filter_numbers(3,range(10))
for i in gen:
print(i)
上面的例子中,生成器filter_numbers()返回范围内所有能被传入的n整除的数。具体实现是在循环generator的过程中,通过条件if i % n == 0过滤出需要的数。
Python的生成器可实现更复杂的条件和循环结构。熟练掌握生成器是Python高效编程的重要基础。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。