python 生成器
时间: 2023-08-16 07:16:33 浏览: 91
简单了解Python生成器是什么
生成器是Python中的一个对象,它按照某种规律来生成元素的对象。与列表不同,生成器保存了产生元素的算法,并记录了游标的位置,以便下次继续获取数据而不是从头开始。生成器可以通过调用next()方法来逐个获取值,它不会保存所有的数据,每次调用只返回一个值,既能享受列表的好处,又不会占用过多的内存空间。创建生成器可以将一个列表生成式的方括号\[\]改为圆括号(),例如`(i for i in range(0,5))`就创建了一个生成器。\[1\]\[2\]
在使用生成器时,需要注意一些细节。例如,在使用send()方法之前,需要先通过next()方法生成一次数据,否则会出现TypeError: can't send non-None value to a just-started generator的错误。另外,生成器可以使用yield语句来产生值,并可以通过send()方法向生成器发送数据。下面是一个示例代码:
```python
def demo():
for i in range(10):
res = yield i
print('send传入的数据:', res)
g = demo()
print('next生成的数据:', next(g))
print('send生成的数据:', g.send(6))
```
以上代码中,通过调用next(g)获取生成器的下一个值,然后使用g.send(6)向生成器发送数据。\[3\]
#### 引用[.reference_title]
- *1* [python之三大法器——生成器](https://blog.csdn.net/qq_29049499/article/details/121330302)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [python——生成器详解(2022年9月5日更新了内容)](https://blog.csdn.net/YZL40514131/article/details/119989244)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文