迭代

用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笔记(十)_迭代器与生成器的更多相关文章

  1. 完全理解 Python 迭代对象、迭代器、生成器

    完全理解 Python 迭代对象.迭代器.生成器 2017/05/29 · 基础知识 · 9 评论 · 可迭代对象, 生成器, 迭代器 分享到: 原文出处: liuzhijun    本文源自RQ作者 ...

  2. 完全理解 Python 迭代对象、迭代器、生成器(转)

    完全理解 Python 迭代对象.迭代器.生成器 本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators » nvie.com,俺写的这篇文章是 ...

  3. 【笔记】Python基础四:迭代器和生成器

    一,迭代器协议和for循环工作机制 (一),迭代器协议 1,迭代器协议:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个stopiteration异常,以终止迭代(只能往 ...

  4. Python之模块,迭代器与生成器

    本节涉及内容: 1. 迭代器和生成器 2. 递归 3. 字符串格式化 4. 模块 内置模块 自定义模块 第三方模块 5. 序列化的模块 json pickle (一). 迭代器和生成器: 迭代器:  ...

  5. 理解Python迭代对象、迭代器、生成器

    作者:zhijun liu链接:https://zhuanlan.zhihu.com/p/24376869来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 本文源自RQ作 ...

  6. [转载]完全理解Python迭代对象、迭代器、生成器

    译文地址:liuzhijun 在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导 ...

  7. Python 迭代对象、迭代器、生成器

    原文出处: liuzhijun 本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators,俺写的这篇文章是按照自己的理解做的参考翻译,算不上是原文 ...

  8. Python迭代对象、迭代器、生成器

    在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict ...

  9. 完全理解Python 迭代对象、迭代器、生成器

    在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict ...

随机推荐

  1. hdu1423 最长公共上升子序列

    题目传送门 Greatest Common Increasing Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: ...

  2. 基于Opencv自有模型识别人脸与人眼

    #!/usr/bin/python # -*- coding: utf-8 -*- import cv2 face_cascade = cv2.CascadeClassifier("D:/O ...

  3. Java 时间类 Date 和 Calendar

    在项目中获取一个yyyy-MM-dd HH:mm:ss格式的时间字符串 package org.htsg.kits; import java.text.SimpleDateFormat; import ...

  4. python常用函数 O

    OrderedDict() 保持dict元素插入顺序. 例子: open(path) 可以对文件进行操作,有'r'读模式.'w'写模式.'a'追加模式.'b'二进制模式.'+'读/写模式等,操作完需要 ...

  5. PHP: 双层 for循环的执行过程

    先看代码 <?php for ($i = 0; $i<3; $i++) { for ($x = 0; $x<3; $x++) { // code... } } ?> 看下它的执 ...

  6. Mybatis-Generator demo

    使用Mybatis-Generator自动生成Dao.Model.Mapping相关文件(转) https://www.cnblogs.com/smileberry/p/4145872.html == ...

  7. HTML5 arc的例子

    demo.html <!DOCTYPE html> <html lang="zh"> <head> <meta charset=" ...

  8. Flutter的生命週期

    Flutter跟安卓的Activity.iOS的ViewController一样拥有自己的生命周期, Flutter中一切都是Widget,渲染方式有点像H5的DOM树. 先看生命周期图: Flutt ...

  9. BZOJ3508 开灯 & [校内NOIP2018模拟20181027] 密码锁

    Time Limit: 10 Sec Memory Limit: 128 MB Description xx作为信息学界的大神,拥有众多的粉丝.为了感谢众粉丝的爱戴,xx决定举办一场晚会.为了气派,x ...

  10. List接口和Set接口及其常用实现类概述

    一.List接口 List:有序的 collection(也称为序列).此接口的用户可以对列表中每个元素的插入位置进行精确地控制.用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元 ...