广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python3迭代器和生成器
  • 106
分享到

python3迭代器和生成器

生成器迭代 2023-01-31 08:01:20 106人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

迭代对象:在我看来就是可以用for循环依次取值的一个序列就叫可迭代对象迭代器:就是可以用next()来进行取值的对象生成器:我的理解就是在迭代器的基础上给了与暂停功能的函数生成器其实就是一种特殊的迭代器。它使一种更为高级、更为优雅的迭代器。

迭代对象:在我看来就是可以用for循环依次取值的一个序列就叫可迭代对象

迭代器:就是可以用next()来进行取值的对象

生成器:我的理解就是在迭代器的基础上给了与暂停功能的函数

生成器其实就是一种特殊的迭代器。它使一种更为高级、更为优雅的迭代器。

使用生成器让我们可以以一种更加简洁的语法来定义迭代器。



这三者的关系如下:

可迭代对象包含了迭代器,迭代器又包含了生成器

可迭代对象>>>迭代器>>>生成器

网上找了张图很明显

迭代器.png

下面进行举例:

In [78]: isinstance((),Iterable)#说明了元组是可迭代对象
Out[78]: True

In [79]: isinstance([],Iterable)#说明了列表是可迭代对象
Out[79]: True

In [80]: isinstance({},Iterable)#说明了字典是可迭代对象
Out[80]: True

In [81]: isinstance("abc",Iterable)#说明了字符串是可迭代对象
Out[81]: True

In [82]: aa = (x for x in range(5))#定义一个生成器

In [83]: type(aa)
Out[83]: generator

In [84]: isinstance(aa,Iterable)#说明了生成器是可迭代对象
Out[84]: True


而下面的例子则是证明了字典/元组/列表/字符串不是迭代器:

In [86]: isinstance((1,23,4),Iterator)
Out[86]: False

In [87]: isinstance([],Iterator)
Out[87]: False

In [88]: isinstance({},Iterator)
Out[88]: False

In [89]: isinstance("abc",Iterator)
Out[89]: False


下面的例子则说明生成器不都是迭代器:

In [90]: bb = [x for x in range(5)]

In [91]: type(bb)
Out[91]: list

In [92]: bb
Out[92]: [0, 1, 2, 3, 4]

In [93]: cc = inter(bb)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-93-fd07bb1f753D> in <module>()
----> 1 cc = inter(bb)

NameError: name 'inter' is not defined

In [94]: cc = iter(bb)

In [95]: type(cc)
Out[95]: list_iterator

In [96]: cc
Out[96]: <list_iterator at 0x7fa4d6e53390>

In [97]: isinstance(bb,Iterator)
Out[97]: False

In [98]: isinstance(bb,Iterable)
Out[98]: True

In [99]: isinstance(cc,Iterator)
Out[99]: True

In [100]: isinstance(cc,Generator)
Out[100]: False


生成器和迭代器的区别:

 生成器是next的,next的操作,按照序列顺序一次只能返回一个元素
 迭代器是一次性读取了可迭代对象的所有元素到内存。 


生成器函数的一个例子:


比如你欠了银行180W块钱,

但是你没有能力一次性的还完,

或者说你不想和亲戚朋友借钱来还,

所以你在银行办了18个月分期还款来缓解自己的压力(生成器),

就这样银行每次给你发这个月的账单你就还一次10W,

直到18个月后你就把钱还完了

这就是生成器,每个月来了账单就还一次,知道把钱还完

这样就不会在一次性还钱的时候把自己给急疯了,银行也能够收到它的钱的!

这就是生成器的作用,如果我们产生的数据很多,

数据量很大的话,很容易把进程跑死或者把服务器跑崩溃,

这个生成器就很好的解决了这个问题


如果有错误的地方欢迎各位大佬帮忙指正,谢谢!

这篇文章个人感觉还挺好:

https://www.cnblogs.com/Vuedev/p/7349476.html


--结束END--

本文标题: python3迭代器和生成器

本文链接: https://www.lsjlt.com/news/192440.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python3迭代器和生成器
    迭代对象:在我看来就是可以用for循环依次取值的一个序列就叫可迭代对象迭代器:就是可以用next()来进行取值的对象生成器:我的理解就是在迭代器的基础上给了与暂停功能的函数生成器其实就是一种特殊的迭代器。它使一种更为高级、更为优雅的迭代器。...
    99+
    2023-01-31
    生成器 迭代
  • python3--迭代器,生成器
    一 迭代器1 什么是可迭代对象?字符串,列表,元组,字典,集合都可以被for循环,说明他们都是可迭代的怎么来证明这一点呢?注释:type只能判断是什么类型isintance判断方面更广,不仅能判断类型,还能判断是否可迭代Iterable是否...
    99+
    2023-01-30
    生成器 迭代
  • Python3 迭代器与生成器
    Edit笔记内容:Python3 迭代器与生成器 笔记日期:2017-10-28迭代器迭代是Python最强大的功能之一,是访问集合元素的一种方式。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元...
    99+
    2023-01-31
    生成器 迭代
  • Python3 迭代器,生成器,装饰器
    1.迭代器 迭代器有两个基本方法,iter()和next(),next()完成后会引发StopIteration异常 a='abcdef' b=iter(a) #创建迭代器对象 print(type(b)) while True: t...
    99+
    2023-01-30
    生成器 迭代
  • python3 迭代器、生成器、装饰器、
    本节内容迭代器&生成器装饰器Json & pickle 数据序列化软件目录结构规范作业:ATM项目开发 1.列表生成式迭代器&生成器列表生成式孩子我现在有个需求看列表[0, 1, 2, 3, 4, 5, 6, 7, ...
    99+
    2023-01-31
    生成器 迭代
  • Python3的生成器和迭代器代码怎么写
    本篇内容主要讲解“Python3的生成器和迭代器代码怎么写”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python3的生成器和迭代器代码怎么写”吧!1.生成器# 一边循环一边计算的机...
    99+
    2023-06-28
  • python3.7 迭代器和生成器
    #!/usr/bin/env python __author__ = "lrtao2010" #python3.7 迭代器和生成器 #迭代器协议: ''' 1、迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的...
    99+
    2023-01-30
    生成器 迭代
  • python迭代器和生成器
    1.经典迭代器 import re RE_WORD = re.compile('\w+') class Sentence: def __init__(self, text): self.text = te...
    99+
    2023-01-30
    生成器 迭代 python
  • 列表生成式,迭代器和生成器
    一、列表生成式 现在有个需求,看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],现在要求把列表里的每个值加1,你怎么实现?你可能会想到的几种方法: 方法1: a = [0, 1, 2, 3, 4, 5, 6, 7, 8...
    99+
    2023-01-31
    生成器 迭代 列表
  • 迭代器与生成器
    这一部分待加强!                (一)迭代器    一:简介    迭代是Python最强大的功能之一,是访问集合元素的一种方式。    迭代器是一个可以记住遍历的位置的对象。    迭代器对象从集合的第一个元素开始访问,...
    99+
    2023-01-30
    生成器 迭代
  • python 生成器&迭代器
      一、生成器 1、列表生成器:列表生成式就像是一个厨师,他只会做这n(n为任意整数)道菜,想吃甚麽做甚麽,不吃不做,不浪费空间;而列表表达式就相当于已经做好的n盘菜,占用空间。2、生成器的创建方法: s = (x*2 for x in...
    99+
    2023-01-30
    生成器 迭代 python
  • 第13天-迭代器和生成器
    迭代器 迭代就是重复的一个过程,但是不是单纯的重复,每一次的重复都是基于上一次的结果产生的。不过只记住迭代他就是重复的执行过程就是了。 #单纯的重复不是迭代,例如: count = 0 while count < 3: p...
    99+
    2023-01-30
    生成器 迭代
  • 8 python的迭代器和生成器
    概述         在上一节,我们介绍了Python的模块和包,包括:什么是模块、导入模块、自定义模块、__name__、什么是包、创建包、导入包等内容。在这一节中,我们将介绍Python的迭代器和生成器。在Python中,迭代器是一个非...
    99+
    2023-09-01
    python 迭代器 生成器
  • Python3 迭代器
    Python3 迭代器说明: 迭代器是一个可以记住遍历的位置的对象 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束 迭代器只能往前不会后退 字符串,列表或元组对象都可用于创建迭代器示例1: #!/usr/bin/pytho...
    99+
    2023-01-31
    迭代
  • Python迭代器与生成器
    生成器仅仅拥有生成某种东西的能力,如果不用__next__方法是获取不到值得。创建一个生成器函数>>> def scq(): ...    print("11") # 当函数代码块中遇到yield关键字的时候,这个函数就是...
    99+
    2023-01-31
    生成器 迭代 Python
  • 详解Python之可迭代对象,迭代器和生成器
    目录一、概念描述二、序列的可迭代性三、经典的迭代器模式四、生成器也是迭代器五、实现惰性迭代器六、使用生成器表达式简化惰性迭代器总结 一、概念描述 可迭代对象就是可以迭代的对象,我们可...
    99+
    2022-11-12
  • JavaScript中的迭代器和可迭代对象与生成器
    目录1. 什么是迭代器?1.1 迭代器的基本实现1.2 迭代器的封装实现2. 什么是可迭代对象2.1 原生可迭代对象(JS内置)2.1.1 部分for of 演示2.1.2 查看内置...
    99+
    2022-11-13
  • 生成器,迭代器,装饰器
    生成器 (generator) 概念 在Python中, 一边循环一边计算的机制, 称为生成器: generator 创建生成器: G = ( x*2 for x in range(5)) 可以通过 next(生成器) 函数获得生成...
    99+
    2023-01-31
    生成器 迭代
  • Python学习之迭代器和生成器
    迭代器 在Python如果一个对象可被循环(遍历)该对象中每一个元素的过程叫做迭代。例如 ,字典、字符串、列表、元祖、集合等。他们可被迭代的原因是,都有一个共同的内置函数__iter__。通过执行内置对象的__next__函数,可以依次打...
    99+
    2023-01-30
    生成器 迭代 Python
  • python迭代器,生成器详解
    目录迭代器 生成器 总结迭代器 聊迭代器前我们要先清楚迭代的概念:通常来讲从一个对象中依次取出数据,这个过程叫做遍历,这个手段称为迭代(重复执行某一段代码块,并将每一次迭代得到的结...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作