迭代

简单的说,可将某个数据集内的数据依次取出,叫做迭代

可迭代协议

内部实现的_iter_方法

常见的可迭代对象类型

str,list,tuple,dict,set,range,文件句柄

# 查看str是否可迭代

print(dir(str))

['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__','__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__','__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__','__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__',
'__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs','find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier',
'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle
', 'isupper', 'join', 'ljust', 'lower', 'lstrip','maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split','splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

判断某对象是不是可迭代对象,有两种方法:

  1. print(‘__iter__’ in dir(str))
  2. from collections import Iterable
    print(isinstance('abc',iterable)
    print(isinstance('abc',str))

迭代器定义

内部含有__iter__且含有__next__方法的对象就是迭代器,遵循迭代器协议

  • 将可迭代对象转化成迭代器
s1 = 'abcd'
obj_s = s1.__iter__()
  • 将可迭代对象转化成迭代器
obj_s = iter(s1)
print(obj_s)
print(obj_s.__next__())

判断当前对象是否是迭代器的两种方法

s1 = 'abc'
print('__iter__' in dir(s1))
print('__next__' in dir(s1))
from collections import Iterator
l1 = [1,2,3]
print(isinstance(l1,Iterator))
l1_obj = l1.__iter__()
print(isinstance(l1_obj,Iterator))

迭代器的好处

  • 节省内存
  • 惰性机制
  • 单向执行,不可逆

python学习之迭代器相关推荐

  1. Python学习:迭代器与生成器

    1.生成器 如果创建一个有很多元素的列表,但是只需要访问前几个元素,后面的元素占着的空间就白白浪费了 在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间. 在Pyt ...

  2. [转载] Python 学习笔记 迭代器和生成器

    参考链接: Python中的迭代器函数2(islice(),starmap(),tee()..) 本文链接地址 http://quqiuzhu.com/2016/python-iterator-and ...

  3. Python学习之迭代器协议

    文章目录 迭代(iteration) 可迭代(iterable) 迭代器(iterator) 迭代器协议(iterator protocol) 迭代器协议与 for 循环 迭代(iteration) ...

  4. python学习笔记--迭代器

    转载自理解Python的迭代器 首先,廖雪峰老师的教程中解释了迭代器和生成器,这篇文章只是补充和我个人的总结. 什么是迭代 可以直接作用于for循环的对象统称为可迭代对象(Iterable). 可以被 ...

  5. python学习-38迭代器和生成器

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

  6. python学习day-8 迭代器 生成器 装饰器

    http://www.cnblogs.com/linhaifeng/articles/7580428.html 迭代器#迭代器即迭代的工具,那什么是迭代呢?#迭代是一个重复的过程,每次重复即一次迭代, ...

  7. Python学习笔记三之编程练习:循环、迭代器与函数

    Python学习笔记三之编程练习 1. 编程第一步 # 求解斐波纳契数列 #/user/bin/python3#Fibonacci series:斐波那契数列 #两个元素的总和确定了下一个数 a,b= ...

  8. Python学习的十个阶段,学完大成,对应一下看看你自己在哪个阶段

    大家好,我是梦雅. \ 今天给大家整理了Python学习的十个阶段内容,看看你现在正处于哪个阶段,想学习的朋友也可以根据这个阶段规划学习. \ \ \ 阶段一:Python基础[ 初入江湖] \ Li ...

  9. Python学习笔记(十一)

    Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...

  10. python学习笔记目录

    人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...

最新文章

  1. BZOJ1251: 序列终结者
  2. oracle10g总结
  3. 怎么使用7zip进行分批压缩_装机必备软件之压缩软件篇——7zip
  4. JAVA编码规约(阿里)
  5. pthread中如何追踪stack over flow
  6. php中怎么定义page,css @page的使用与定义详解
  7. 李开复:AlphaGo 若打败了世界冠军,意味着什么?
  8. PHP文件下载过滤类
  9. JavaWeb项目实战(3)软件快速下载
  10. SpringCloud和SpringBoot组件对比
  11. 5. 学习集合与常用类
  12. 无人机图像的目标检测的学习
  13. 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_13-MongoDb入门-数据库和集合...
  14. vb webbrowser html源码,VB WebBrowser控件常用源码
  15. 超市管理系统java代码,超市管理系统完整+源代码
  16. Qt如何调用xlsl的方法!
  17. Excel中Mac和Windows对绝对和相对引用的快速切换方式
  18. mysql假死_win7系统假死的5种情况和处理方法
  19. 新会员太少? 门店会员拉新
  20. 电脑技巧 之 Discord翻译插件(PC端)(保姆级教程)

热门文章

  1. 研究svg编辑器过程中遇到的问题总结
  2. vdbench和fio
  3. JavaWeb项目框架
  4. MDR的进阶版本-GMDR
  5. Turbo码原理简介
  6. python九九乘法表代码及循环过程详解
  7. Un*、IdL分别突变情况下双闭环直流调速系统仿真
  8. AD PCB导出Gerber文件(非常详细的步骤)
  9. python中模块下载方法(conda+pip)
  10. Aspose word pdf 相互转换