0Pricing
Learn AI with Python · 课时

生成器

了解生成器及其在创建迭代器方面的用途

生成器 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 2 节课,共 5 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 5 节课。

生成器简介

生成器简介

生成器是 Python 中一种特殊的迭代器,允许您以惰性方式遍历数据。它们不会一次返回所有数据,而是每次生成一项,因此能够高效利用内存。

在本课中,您将学习如何在 Python 中创建和使用生成器。

生成器 — 插图 1

什么是生成器

什么是生成器

生成器是使用 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 创建生成器函数。
  • 生成器与列表之间的区别。
  • 生成器的使用场景,例如无限序列和大型数据集。

做得很好!让我们继续学习下一个主题。

生成器 — 插图 11

常见问题解答

「生成器」课时是免费的吗?

是的 — 「生成器」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 装饰器
  2. 生成器
  3. 上下文管理器(with 语句)
  4. 推导式(列表、集合和字典)
  5. 迭代器与可迭代对象
← 返回 Learn AI with Python