python之yield表达式学习
作者:junjie 时间:2022-05-06 14:51:43
python中有一个略微奇怪的表达式叫yield expression,本文就来探究一下这是个什么东西。一步一步来。
iterable
mylist = [1,2,3]
for item in mylist:
print str(item)
mylist是一个列表(list),我们可以逐条取出每一个item,这个过程叫做iteration。像list这样可以用”for…in…”依次遍历的对象被称为iterable,其他的iterable还有string、tuple、dict等。iterable的一个特点是所有的item会存储到内存中,这样会产生一些不便和不利的地方,于是催生了generator(后面讲到)。
list comprehension(列表推导式)
mylist = [x*x for x in range(3)]
表达式右边是一个for循环的简写形式,用[]包裹起来(称为list comprehension),表达式的值是一个list,我们可以像普通list那样使用”for…in…”遍历其元素,如:
for item in mylist:
print str(item)
generator
generator
对上面的list comprehension稍作修改:
mygenerator = (x*x for x in range(3))
for item in mygenerator:
print item
可以看到只是把[]换成了(),这时表达式的值不再是list,而是一个generator。
generator也属于iterable,但是其调用方式非常特别。
yield
def creatGenerator():
mylist = range(3)
for x in mylist:
yield x*x
mygenerator = creatGenerator()
for x in mygenerator:
print(x)
yield的使用方法和return是一样的。但是(重点来了):
标签:python,yield
0
投稿
猜你喜欢
PHP判断数组是否为空的常用方法(五种方法)
2024-05-11 09:25:53
几个简单的基本的sql语句
2024-01-20 18:55:58
TensorFlow 滑动平均的示例代码
2023-10-25 15:41:28
TensorFlow-gpu和opencv安装详细教程
2023-02-16 00:55:55
python3利用ctypes传入一个字符串类型的列表方法
2021-06-10 20:33:36
python3 selenium自动化测试 强大的CSS定位方法
2021-09-13 01:41:13
conda与jupyter notebook kernel核环境不一致的问题解决
2021-07-03 15:43:02
基于python pygame实现的兔子吃月饼小游戏
2023-10-26 21:25:23
Python实现Matplotlib,Seaborn动态数据图的示例代码
2023-02-03 23:47:22
mysql mysqldump只导出表结构或只导出数据的实现方法
2024-01-23 19:46:55
perl AnyEvent简单介绍和入门知识
2022-09-22 03:10:50
Python爬虫番外篇之Cookie和Session详解
2022-02-09 18:56:44
Vuex总体案例详解
2023-07-02 16:51:52
python机器学习之神经网络(二)
2021-12-21 08:41:54
分析Python感知线程状态的解决方案之Event与信号量
2022-05-11 07:23:35
python生成日历实例解析
2023-05-16 12:47:31
Python Selenium 之关闭窗口close与quit的方法
2023-11-14 01:28:06
解决MySql8.0 查看事务隔离级别报错的问题
2024-01-17 23:14:01
python 递归深度优先搜索与广度优先搜索算法模拟实现
2022-10-03 12:51:59
OpenCV搞定腾讯滑块验证码的实现代码
2022-09-09 21:41:04