python基础十一之迭代器和生成器
可迭代
内置方法中含有__iter__的数据类型都是可迭代的,只要是可迭代的就可以使用for循环,反之亦然。
print(dir('')) # dir()函数可以获取当前数据类型的所有内置方法 返回值是list print('__iter__' in dir([])) # 判断是否含有__iter__内置方法
迭代器
内置方法中含有__iter__和__next__的都是迭代器,所以迭代器一定是可迭代的
# 一个可迭代的对象调用__iter__()之后会返回一个迭代器 print(type([].__iter__())) # <class 'list_iterator'>
迭代器可以使用__next__()方法一个一个去获取值
li = [1, 2, 3, 4, 5] iterator = li.__iter__() print(iterator.__next__()) # 1 print(iterator.__next__()) # 2 print(iterator.__next__()) # 3
迭代器的好处:
从容器内一一取值,可以取出全部内容
节省内存空间:每次取值时才在内存中生成一个值
迭代器和可迭代判断方法
from collections import Iterator from collections import Iterable print(isinstance([], Iterator)) # Iterator 迭代器 print(isinstance([], Iterable)) # Iterable 可迭代
生成器
生成器是含有yield关键字的迭代器。
# 定义 """def generator():函数体yield 返回值 """
调用生成器后返回的是一个生成器。
def generator():print('生成器')yield 'zxc'return 'a' # 生成器中yield和return能同时存在,return在yield后面定义没有任何意义, # return在yield前面定义将无法执行yield,也就不在是生成器了 ret = generator() print(type(ret)) # <class 'generator'>
转载于:https://www.cnblogs.com/zxc-Weblog/p/8179123.html
python基础十一之迭代器和生成器相关推荐
- python基础知识7——迭代器,生成器,装饰器
迭代器 1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器 ...
- 完全理解 Python 迭代对象、迭代器、生成器(转)
完全理解 Python 迭代对象.迭代器.生成器 本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators » nvie.com,俺写的这篇文章是 ...
- python:容器、迭代器、生成器 简单介绍
python:容器.迭代器.生成器 简单介绍 python提供了多种数据类型来存放数据项. 之前已经介绍了几个python中常用的容器,分别是列表list.元组tuple.字典dict和集合set. ...
- Python基础day4 函数对象、生成器 、装饰器、迭代器、闭包函数
一.函数对象 正确理解 Python函数,能够帮助我们更好地理解 Python 装饰器.匿名函数(lambda).函数式编程等高阶技术. 函数(Function)作为程序语言中不可或缺的一部分,太稀松 ...
- python (八)迭代器、生成器、列表推导式
一.迭代器 1.先来讲讲什么是可迭代对象 字符串.列表.元组.字典.集合都可以被for循环,说明他们都是可迭代的. 2.怎么判断是不是一个可迭代对象 判定方法:内部含有'__iter__'方法的数据就 ...
- 完全理解Python迭代对象、迭代器、生成器
本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators,俺写的这篇文章是按照自己的理解做的参考翻译,算不上是原文的中译版本,推荐阅读原文,谢谢网 ...
- 完全理解python迭代对象_完全理解Python迭代对象、迭代器、生成器
1.assert:python assert断言是声明其布尔值必须为真的判定,如果发生异常就说明表达示为假.可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为假,就会触 ...
- python函数知识四 迭代器、生成器
15.迭代器:工具 1.可迭代对象: 官方声明,只要具有__iter__方法的就是可迭代对象 list,dict,str,set,tuple -- 可迭代对象,使用灵活 #方法一: list.__ ...
- 批量生成数组_JavaScript【重温基础】13.迭代器和生成器
本文是 重温基础 系列文章的第十三篇. 今日感受:每次自我年终总结,都会有各种情绪和收获. 本章节复习的是JS中的迭代器和生成器,常常用来处理集合. 前置知识: JavaScrip已经提供多个迭代集合 ...
最新文章
- android webview setappcacheenabled,Java WebView.setDrawingCacheEnabled方法代码示例
- [云炬创业管理笔记]第一章讨论3
- [C++调试笔记]求电势posi.cpp
- 项目常用的PHP代码
- MySQL:8种SQL典型错误用法,值得收藏!
- python简单超级马里奥游戏下载大全_Python实现超级玛丽游戏系列教程02玛丽走跑...
- SQL Serever学习4
- 帮助小明翻译他的编程语言
- [转载]JAVA操作符
- 开源的物联网技术平台thingsboard安装测试及使用步骤
- 微软 补丁 服务器,2003到2016各版服务器操作系统ms17-010补丁直链地址
- 用友nc633与oracle,用友NC和ORACLE数据库配置教程.doc
- DDR3:MIG控制器设计(vivado)
- 固态硬盘+机械硬盘安装win10和ubuntu18.04双系统经验总结
- 设备备件管理怎么做?
- ESP8266AT固件获取时间和连接心知天气
- 高德地图的基础使用(一)显示地图
- c语言实现自动打开文件夹,c语言打开文件(c语言文件打开方式代码)
- C#Winform的DataGridView控件使用详解2—DataGridView表格样式设置及表格操作
- 【R语言】ggplot2---散点图的边框和颜色填充问题
热门文章
- java file 对象_Java里File对象的问题。
- 双非计算机考研推荐学校传菜电梯,22考研双非院校排名Top100,前3名竟然是这几所!...
- python filter函数中写none_Python3基础 filter 第一个参数为NONE时 结果只返回为True的对象...
- php伪静态后不能访问html,php伪静态后html不能访问怎么办
- [渝粤教育] 盐城工学院 水处理微生物学 参考 资料
- 【渝粤题库】广东开放大学 会展策划 形成性考核
- 国家开放大学2021春1107传感器与测试技术题目
- 【渝粤题库】陕西师范大学100091 现代教育技术学 作业(专升本)
- 2021年春季学期期末统一考试 西方经济学(本) 试题
- Probability, Matringale,Markov Chain, MCMC