Python笔记(十)_迭代器与生成器
迭代
用for...in来遍历一个可迭代对象的过程就叫迭代
可迭代对象:列表、元组、字典、集合、字符串、生成器
可以使用内置函数isinstance()判断一个对象是否是可迭代对象
>>>from collections import Iterable
>>>isinstance('abc',Iterable)
True
>>>isinstance('abc',(int,str))
True
迭代器
可以被next()函数调用并不断返回下一个值的对象称为迭代器
迭代器:生成器(列表、元组、字典、集合、字符串都不是迭代器)
可以使用内置函数isinstance()判断一个对象是否是迭代器
>>>from collections import Iterator
>>>isinstance([],Iterator)
False
>>>isinstance(iter([]), Iterator)
True
可以使用iter()函数将其变为一个迭代器
凡是可作用于for循环的对象都是可迭代对象
凡是可作用于next()函数的对象都是迭代器
生成器
一边循环一边计算生成一个值的特殊类型函数,是一种特殊的迭代器
在函数的执行过程中,yield语句会把你需要的值返回给调用生成器的地方,然后退出函数,下一次调用生成器函数的时候又从上次中断的地方开始执行,而生成器内的所有变量参数都会被保存下来供下一次使用
创建方式一:用小括号将列表生成式括起来就是一个生成器
>>>gene1=(i for i in range(2))
分个打印值,使用next()函数
>>>next(gene1)
0
>>>next(gene2)
1
一次性打印值,使用for循环
>>>for each in gene1:
print(each,end=' ')
0
1
创建方式二:在函数中使用yield语句
>>>def fibs():
a,b = 0,1
while True:
a,b = b,a + b
yield a
分个打印值,使用next()函数
>>>a=fibs()
>>>next(a)
1
>>>next(a)
1
一次性打印值,使用for循环
>>>for each in fibs():
if each > 100:
break
print(each)
Python笔记(十)_迭代器与生成器的更多相关文章
- 完全理解 Python 迭代对象、迭代器、生成器
完全理解 Python 迭代对象.迭代器.生成器 2017/05/29 · 基础知识 · 9 评论 · 可迭代对象, 生成器, 迭代器 分享到: 原文出处: liuzhijun 本文源自RQ作者 ...
- 完全理解 Python 迭代对象、迭代器、生成器(转)
完全理解 Python 迭代对象.迭代器.生成器 本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators » nvie.com,俺写的这篇文章是 ...
- 【笔记】Python基础四:迭代器和生成器
一,迭代器协议和for循环工作机制 (一),迭代器协议 1,迭代器协议:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个stopiteration异常,以终止迭代(只能往 ...
- Python之模块,迭代器与生成器
本节涉及内容: 1. 迭代器和生成器 2. 递归 3. 字符串格式化 4. 模块 内置模块 自定义模块 第三方模块 5. 序列化的模块 json pickle (一). 迭代器和生成器: 迭代器: ...
- 理解Python迭代对象、迭代器、生成器
作者:zhijun liu链接:https://zhuanlan.zhihu.com/p/24376869来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 本文源自RQ作 ...
- [转载]完全理解Python迭代对象、迭代器、生成器
译文地址:liuzhijun 在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导 ...
- Python 迭代对象、迭代器、生成器
原文出处: liuzhijun 本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators,俺写的这篇文章是按照自己的理解做的参考翻译,算不上是原文 ...
- Python迭代对象、迭代器、生成器
在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict ...
- 完全理解Python 迭代对象、迭代器、生成器
在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict ...
随机推荐
- TCP协议分析(包结构)---转
TCP首部格式 tcp数据是被封装在IP数据包中的,和udp类似,在IP数据包的数据部分.tcp数据包的格式如下: 源端口号和目的端口号(寻址)与udp中类似,用于寻找发端和收端应用进程.这两个值加上 ...
- RMQ(鸽巢原理或字符串操作)
http://acm.hdu.edu.cn/showproblem.php?pid=3183 A Magic Lamp Time Limit: 2000/1000 MS (Java/Others) ...
- 攻防世界--game
题目链接:https://adworld.xctf.org.cn/task/answer?type=reverse&number=4&grade=0&id=5074 1.准备 ...
- setter getter 方法
MRC下setter.getter方法写法.重写dealloc方法 @interface People : NSObject @property (nonatomic,strong) NSString ...
- rpc - rpc 程序号数据库
SYNOPSIS /etc/rpc DESCRIPTION rpc 文件列出了rpc 程序的可读名, 可以此代替rpc 程序号. 每行包含如下信息: 运行rpc 程序的服务名 rpc 程序号 别名 各 ...
- 脚本_检测mysql存活状态
#!bin/bash#功能:检测mysql服务是否存活#作者:liusingbon# host为你需要检测的mysql主机的IP 地址,user为mysql账户名,passwd为密码; 这些信息需要根 ...
- Linux命令(干货)
@ vim 编辑快捷键 ctrl + n 是自动补齐 ctrl + p 是往上选择 ctrl + f 是下一屏幕 ctrl + b 是上一屏幕 w:是移动一个单词 b:是向前一个单词 d^:当前行中, ...
- LOJ149 0/1分数规划
竟然没有写过分数规划的题解 考前挣扎一发板子( 二分答案k 然后0/1分数规划的方法就是 分母乘过去然后贪心解决 注意实数二分的精度 一般估计一个次数比较好不然容易出现精度比较误差[惨痛教训 就做完了 ...
- python tkinter开始
tkinter是python自带的GUI库,所以用起来会比较简单 运行一个什么都没有的窗口 import tkinter window=tkinter.Tk()#窗口类定义 window.mainlo ...
- SQL执行顺序和coalesce以及case when的用法
1.mysql的执行顺序 from on join where group by having select distinct union //UNION 操作符用于合并两个或多个 SELECT ...