可迭代

  内置方法中含有__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基础十一之迭代器和生成器相关推荐

  1. python基础知识7——迭代器,生成器,装饰器

    迭代器 1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器 ...

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

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

  3. python:容器、迭代器、生成器 简单介绍

    python:容器.迭代器.生成器 简单介绍 python提供了多种数据类型来存放数据项. 之前已经介绍了几个python中常用的容器,分别是列表list.元组tuple.字典dict和集合set. ...

  4. Python基础day4 函数对象、生成器 、装饰器、迭代器、闭包函数

    一.函数对象 正确理解 Python函数,能够帮助我们更好地理解 Python 装饰器.匿名函数(lambda).函数式编程等高阶技术. 函数(Function)作为程序语言中不可或缺的一部分,太稀松 ...

  5. python (八)迭代器、生成器、列表推导式

    一.迭代器 1.先来讲讲什么是可迭代对象 字符串.列表.元组.字典.集合都可以被for循环,说明他们都是可迭代的. 2.怎么判断是不是一个可迭代对象 判定方法:内部含有'__iter__'方法的数据就 ...

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

    本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators,俺写的这篇文章是按照自己的理解做的参考翻译,算不上是原文的中译版本,推荐阅读原文,谢谢网 ...

  7. 完全理解python迭代对象_完全理解Python迭代对象、迭代器、生成器

    1.assert:python assert断言是声明其布尔值必须为真的判定,如果发生异常就说明表达示为假.可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为假,就会触 ...

  8. python函数知识四 迭代器、生成器

    15.迭代器:工具 1.可迭代对象: ​ 官方声明,只要具有__iter__方法的就是可迭代对象 list,dict,str,set,tuple -- 可迭代对象,使用灵活 #方法一: list.__ ...

  9. 批量生成数组_JavaScript【重温基础】13.迭代器和生成器

    本文是 重温基础 系列文章的第十三篇. 今日感受:每次自我年终总结,都会有各种情绪和收获. 本章节复习的是JS中的迭代器和生成器,常常用来处理集合. 前置知识: JavaScrip已经提供多个迭代集合 ...

最新文章

  1. android webview setappcacheenabled,Java WebView.setDrawingCacheEnabled方法代码示例
  2. [云炬创业管理笔记]第一章讨论3
  3. [C++调试笔记]求电势posi.cpp
  4. 项目常用的PHP代码
  5. MySQL:8种SQL典型错误用法,值得收藏!
  6. python简单超级马里奥游戏下载大全_Python实现超级玛丽游戏系列教程02玛丽走跑...
  7. SQL Serever学习4
  8. 帮助小明翻译他的编程语言
  9. [转载]JAVA操作符
  10. 开源的物联网技术平台thingsboard安装测试及使用步骤
  11. 微软 补丁 服务器,2003到2016各版服务器操作系统ms17-010补丁直链地址
  12. 用友nc633与oracle,用友NC和ORACLE数据库配置教程.doc
  13. DDR3:MIG控制器设计(vivado)
  14. 固态硬盘+机械硬盘安装win10和ubuntu18.04双系统经验总结
  15. 设备备件管理怎么做?
  16. ESP8266AT固件获取时间和连接心知天气
  17. 高德地图的基础使用(一)显示地图
  18. c语言实现自动打开文件夹,c语言打开文件(c语言文件打开方式代码)
  19. C#Winform的DataGridView控件使用详解2—DataGridView表格样式设置及表格操作
  20. 【R语言】ggplot2---散点图的边框和颜色填充问题

热门文章

  1. java file 对象_Java里File对象的问题。
  2. 双非计算机考研推荐学校传菜电梯,22考研双非院校排名Top100,前3名竟然是这几所!...
  3. python filter函数中写none_Python3基础 filter 第一个参数为NONE时 结果只返回为True的对象...
  4. php伪静态后不能访问html,php伪静态后html不能访问怎么办
  5. [渝粤教育] 盐城工学院 水处理微生物学 参考 资料
  6. 【渝粤题库】广东开放大学 会展策划 形成性考核
  7. 国家开放大学2021春1107传感器与测试技术题目
  8. 【渝粤题库】陕西师范大学100091 现代教育技术学 作业(专升本)
  9. 2021年春季学期期末统一考试 西方经济学(本) 试题
  10. Probability, Matringale,Markov Chain, MCMC