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
  • asp之家 网络编程 m.aspxhome.com