鱼C论坛

 找回密码
 立即注册
查看: 32|回复: 1

遇到了一个问题

[复制链接]
发表于 昨天 10:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
生成器是什么
我在看random函数没看懂
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 昨天 10:47 | 显示全部楼层
生成器(Generator)是 Python 中一种特殊的迭代器,可以**按需生成值**(而不是一次性生成所有值),极大节省内存。它的核心是 yield 关键字。

### 生成器的特点:
1. **惰性计算**:调用时生成一个值后暂停,下次从暂停处继续
2. **节省内存**:适合处理海量数据
3. **只能遍历一次**:遍历结束后不能再使用

---

### 示例:结合 random 模块
假设要生成 5 个随机数,但不想一次性存到列表中:
  1. import random

  2. def random_generator(count):
  3.     for _ in range(count):
  4.         # 每次生成一个随机数后暂停
  5.         yield random.randint(1, 100)  

  6. # 创建生成器对象(此时并未计算)
  7. gen = random_generator(5)  

  8. # 按需取值
  9. print(next(gen))  # 输出第1个随机数
  10. print(next(gen))  # 输出第2个随机数

  11. # 用循环取剩余值
  12. for num in gen:
  13.     print(num)    # 输出剩余3个
复制代码


---

### 关键点:
1. 函数中出现 yield 就变成了生成器
2. 调用生成器函数返回生成器对象(如 gen
3. 用 next() 或循环触发执行

---

### 对比普通函数:
普通函数 | 生成器
---|---
return 返回结果 | 用 yield 暂停并返回值
一次性返回所有结果 | 每次只产出一个值
立即执行全部计算 | 调用 next() 时才执行

当看到代码中出现 yield 时,基本可以确定这是生成器!它特别适合处理流式数据或无限序列(如持续读取传感器数据)。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-19 01:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表