生成器
了解生成器及其在创建迭代器方面的用途
生成器 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 2 节课,共 5 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 5 节课。
生成器简介
生成器简介
生成器是 Python 中一种特殊的迭代器,允许您以惰性方式遍历数据。它们不会一次返回所有数据,而是每次生成一项,因此能够高效利用内存。
在本课中,您将学习如何在 Python 中创建和使用生成器。

什么是生成器
什么是生成器
生成器是使用 yield 关键字一次返回一个值的函数。每次调用生成器的 next() 方法时,都会从上次暂停的位置恢复执行。
# Basic generator example
def my_generator():
yield 1
yield 2
yield 3
# Using the generator
gen = my_generator()
print(next(gen)) # Outputs: 1
print(next(gen)) # Outputs: 2
print(next(gen)) # Outputs: 3生成器的工作原理
生成器的工作原理
生成器会保存函数的状态,因此可以从上次停止的位置准确地恢复执行。这使它们能够高效利用内存,非常适合处理大型数据集。
# Example: Generating a range of numbers
def range_generator(start, end):
while start < end:
yield start
start += 1
for number in range_generator(1, 5):
print(number) # Outputs: 1, 2, 3, 4生成器表达式
生成器表达式
生成器表达式与列表推导式相似,但使用圆括号而不是方括号。它们创建的是生成器,而不是列表。
# Generator expression
gen_exp = (x * x for x in range(5))
for value in gen_exp:
print(value) # Outputs: 0, 1, 4, 9, 16生成器与列表的比较
生成器与列表的比较
生成器比列表更节省内存,因为它们不会将所有数据存储在内存中。相反,它们会动态生成数据。
# Comparing lists and generators
# List comprehension
list_comp = [x * x for x in range(1000000)]
# Generator expression
gen_exp = (x * x for x in range(1000000))
# List comprehension uses more memory
print(type(list_comp)) # Outputs: <class 'list'>
print(type(gen_exp)) # Outputs: <class 'generator'>生成器的使用场景
生成器的使用场景
生成器适用于:
- 处理无法全部装入内存的大型数据集。
- 生成无限序列。
- 对数据进行惰性求值。
无限生成器
无限生成器
生成器可以生成无限序列,例如无穷的数字序列。请务必停止循环,以防止无限执行。
# Infinite generator example
def infinite_sequence():
num = 0
while True:
yield num
num += 1
# Using the infinite generator
for i in infinite_sequence():
if i > 5:
break
print(i) # Outputs: 0, 1, 2, 3, 4, 5具有多个产出点的生成器函数
具有多个产出点的生成器函数
生成器函数可以包含多个 yield 语句,使您能够创建复杂的序列:
# Multiple yields in a generator
def multi_yield():
yield "First"
yield "Second"
yield "Third"
for value in multi_yield():
print(value) # Outputs: First, Second, Third生成器中的常见错误
生成器中的常见错误
以下是需要避免的一些错误:
- 在生成器函数中使用
return而不是yield。 - 没有使用循环或
next()消费生成器。 - 在列表更合适的小型数据集中使用生成器。
我们学到了什么
我们学到了什么
在本课中,您学习了:
- 什么是生成器,以及生成器在 Python 中的工作方式。
- 如何使用
yield创建生成器函数。 - 生成器与列表之间的区别。
- 生成器的使用场景,例如无限序列和大型数据集。
做得很好!让我们继续学习下一个主题。

常见问题解答
「生成器」课时是免费的吗?
是的 — 「生成器」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 5 节课。
「生成器」这节课中我会学到什么?
了解生成器及其在创建迭代器方面的用途 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Learn AI with Python 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 5 节。
「生成器」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Learn AI with Python 课中编写并运行代码吗?
能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。