博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python基础-迭代器与yield生成器
阅读量:4147 次
发布时间:2019-05-25

本文共 1238 字,大约阅读时间需要 4 分钟。

1.迭代器

字符串、列表、元组 可用于创建迭代器

next()和iter()函数示例

# Python3 迭代器'''字符串、列表、元组 可用于创建迭代器'''mList = [1, 2, 3, 4, 5]mIt = iter(mList)while True:    try:        print(next(mIt))    except StopIteration:        break

运行结果

12345

2.yield生成器

  • 生成器是返回迭代器的函数,只能用于迭代操作

  • 在调用生成器运行的过程中,每次遇到yield时函数会暂停并保存当前所有的运行信息,返回yield的值,并在下一次执行next()方法时从当前位置继续运行

运行示例

# coding=utf-8#!/usr/bin/python# Python3 yield 生成器(generator)'''生成器是返回迭代器的函数,只能用于迭代操作在调用生成器运行的过程中,每次遇到yield时函数会暂停并保存当前所有的运行信息,返回yield的值并在下一次执行next()方法时从当前位置继续运行''''''斐波那契前面2个数相加等于第3个数值的特征'''def fibonacci(n):    a = 0    b = 1    temp = a    counter = 0    while True:        if(counter > n):            return n        print('遇到 next()就触发  返回 a = ', a)        yield a        '''        a,b = b,a+b 等效于        a=b        b=a(原值)+b        '''        temp = a        a = b        b = temp + b        counter = counter + 1        print("大于2个 next()才触发  a = %d, b=%d" % (a, b))# 返回迭代器,例如 0 1 1 2 3 5 8 13 21 34 55f = fibonacci(10)next(f)  # 0next(f)  # 1next(f)  # 1next(f)  # 2next(f)  # 3

运行结果

遇到 next()就触发  返回 a =  0大于2个 next()才触发  a = 1, b=1遇到 next()就触发  返回 a =  1大于2个 next()才触发  a = 1, b=2遇到 next()就触发  返回 a =  1大于2个 next()才触发  a = 2, b=3遇到 next()就触发  返回 a =  2大于2个 next()才触发  a = 3, b=5遇到 next()就触发  返回 a =  3

转载地址:http://jmcti.baihongyu.com/

你可能感兴趣的文章
【Python基础5】列表和元组
查看>>
【Python基础6】格式化字符串
查看>>
【Python基础7】字典
查看>>
【Python基础8】函数参数
查看>>
【Python基础9】浅谈深浅拷贝及变量赋值
查看>>
Jenkins定制一个具有筛选功能的列表视图
查看>>
【Python基础10】探索模块
查看>>
【Python】将txt文件转换为html
查看>>
[Linux]Shell脚本实现按照模块信息拆分文件内容
查看>>
第 4-9 课:OTA 升级——功能设计
查看>>
第 4-10 课:OTA 升级——服务端实现
查看>>
第 4-11 课:OTA 升级——设备端实现
查看>>
第 4-12 课:设备影子概览
查看>>
第 4-13 课:设备影子——服务端实现
查看>>
第 4-14 课:设备影子——设备端实现
查看>>
第 4-15 课:IotHub 状态监控
查看>>
第 5-1 课:EMQ X 的插件系统
查看>>
第 5-2 课:我们会用到的 Erlang 特性
查看>>
第 5-3 课:搭建开发和编译环境
查看>>
第 5-4 课:编写 emqx-rabbitmq-hook(一)
查看>>