python学习之迭代器
迭代
简单的说,可将某个数据集内的数据依次取出,叫做迭代
可迭代协议
内部实现的_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']
判断某对象是不是可迭代对象,有两种方法:
print(‘__iter__’ in dir(str))
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学习之迭代器相关推荐
- Python学习:迭代器与生成器
1.生成器 如果创建一个有很多元素的列表,但是只需要访问前几个元素,后面的元素占着的空间就白白浪费了 在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间. 在Pyt ...
- [转载] Python 学习笔记 迭代器和生成器
参考链接: Python中的迭代器函数2(islice(),starmap(),tee()..) 本文链接地址 http://quqiuzhu.com/2016/python-iterator-and ...
- Python学习之迭代器协议
文章目录 迭代(iteration) 可迭代(iterable) 迭代器(iterator) 迭代器协议(iterator protocol) 迭代器协议与 for 循环 迭代(iteration) ...
- python学习笔记--迭代器
转载自理解Python的迭代器 首先,廖雪峰老师的教程中解释了迭代器和生成器,这篇文章只是补充和我个人的总结. 什么是迭代 可以直接作用于for循环的对象统称为可迭代对象(Iterable). 可以被 ...
- python学习-38迭代器和生成器
迭代器和生成器 ---- 迭代器协议和for循环工作机制 1.迭代器协议:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么引起一个Stoplteration异常,以终止迭代(只能往 ...
- python学习day-8 迭代器 生成器 装饰器
http://www.cnblogs.com/linhaifeng/articles/7580428.html 迭代器#迭代器即迭代的工具,那什么是迭代呢?#迭代是一个重复的过程,每次重复即一次迭代, ...
- Python学习笔记三之编程练习:循环、迭代器与函数
Python学习笔记三之编程练习 1. 编程第一步 # 求解斐波纳契数列 #/user/bin/python3#Fibonacci series:斐波那契数列 #两个元素的总和确定了下一个数 a,b= ...
- Python学习的十个阶段,学完大成,对应一下看看你自己在哪个阶段
大家好,我是梦雅. \ 今天给大家整理了Python学习的十个阶段内容,看看你现在正处于哪个阶段,想学习的朋友也可以根据这个阶段规划学习. \ \ \ 阶段一:Python基础[ 初入江湖] \ Li ...
- Python学习笔记(十一)
Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...
- python学习笔记目录
人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...
最新文章
- BZOJ1251: 序列终结者
- oracle10g总结
- 怎么使用7zip进行分批压缩_装机必备软件之压缩软件篇——7zip
- JAVA编码规约(阿里)
- pthread中如何追踪stack over flow
- php中怎么定义page,css @page的使用与定义详解
- 李开复:AlphaGo 若打败了世界冠军,意味着什么?
- PHP文件下载过滤类
- JavaWeb项目实战(3)软件快速下载
- SpringCloud和SpringBoot组件对比
- 5. 学习集合与常用类
- 无人机图像的目标检测的学习
- 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_13-MongoDb入门-数据库和集合...
- vb webbrowser html源码,VB WebBrowser控件常用源码
- 超市管理系统java代码,超市管理系统完整+源代码
- Qt如何调用xlsl的方法!
- Excel中Mac和Windows对绝对和相对引用的快速切换方式
- mysql假死_win7系统假死的5种情况和处理方法
- 新会员太少? 门店会员拉新
- 电脑技巧 之 Discord翻译插件(PC端)(保姆级教程)