首页 > 编程语言 >回顾Python的可迭代对象、迭代器、生成器

回顾Python的可迭代对象、迭代器、生成器

时间:2023-04-25 10:59:18浏览次数:45  
标签:__ set 迭代 Python 生成器 iter 对象

一、可迭代对象:可以用for遍历的对象,包括list、set、dict等。

二、迭代器:能够记录当前迭代位置的可迭代对象,就是迭代器。

1)把list、set、dict等简单的可迭代对象用iter()函数包装一下,就成了迭代器。

例如

x=iter([1,2,3]) # type(x) 输出 list_iterator
y=iter({1,2,3}) # type(y) 输出 set_iterator
z=iter({'a':1,'b':2}) # type(z) 输出 dict_keyiterator

2)对于复杂的对象类型,例如类-对象概念中的类,如果某个类实现了__iter_(),__next__()方法,那它也是迭代器。其中__iter__()返回迭代器本身,__next__()用于在迭代的时候返回下一个元素。

三、生成器:

生成器是一种特殊的迭代器,与普通迭代器不同的是,普通迭代器在__next__()函数中使用return来在迭代过程中返回下一个元素;

而生成器使用yield来返回下一个元素,并暂停执行yield后面的代码,然后在下次迭代过程中,从yield之后的下一条语句继续执行。

参考链接:https://foofish.net/iterators-vs-generators.html

 

标签:__,set,迭代,Python,生成器,iter,对象
From: https://www.cnblogs.com/aaronhoo/p/17351948.html

相关文章

  • python创建定时任务
    1,创建每3秒执行一个定时任务importscheduledeftask():print("3秒执行一次任务")deffunc():#清空任务schedule.clear()#创建一个任务schedule.every(3).seconds.do(task)whileTrue:schedule.run_pending()if__name__=='__......
  • linux中查看Python版本和路径
    1,查看python版本,输入python2,查看python路径,输入whereispython ......
  • 配置python虚拟环境的路径
    1配置环境变量WORKON_HOME:我是将以后虚拟环境都放在G:\pyEnvs方便管理2.修改windows环境下mkvirtualenv.bat文件(我的是G:\Python3.7.4\Scripts\mkvirtualenv.bat,),配置虚拟环境根目录地址然后修改第24行【set"venvwrapper.default_workon_home=%USERPROFILE%\Envs"】这里......
  • Python Django 制作商品列表展示
    新建名为goods应用pythonmanage.pystartappgoods修改chapter1/settings.py文件在INSTALLED_APPS数组中添加goods在对象TEMPLATES.OPTIONS中添加django.template.context_processors.media添加三个常量MEDIA_URL='/media/'MEDIA_ROOT=os.path.join(BASE......
  • 比较Python与Java在类的定义、继承、多态等方面的异同
    首先我来进行介绍Python与Java在类的定义、继承、多态等方面的异同1.python类和java类的使用一览java:publicclassCar{privateStringcolor;privateStringmodel;privateintyear;publicCar(Stringcolor,Stringmodel,intyear){......
  • Python基础【21】eval和exec的区别,_builtins
     1.eval执行有返回结果,exec执行但是没有返回结果.2.内建模块_builtins_: ......
  • mac+docker+jenkins,运行python自动化
    一、实现思路在mac本地安装DockerDesktop创建jenkins容器根据自动化项目依赖包构建python镜像(构建自动化python环境)运行新的python容器,执行jenkins从仓库中拉下来的自动化项目执行完成之后删除容器二、环境准备1、一台mac2、在mac上安装DockerDesktop,打开......
  • 【代理设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介代理模式(ProxyPattern)是一种结构型设计模式,用一个类来代理另一个类或几个类的功能。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。延迟初始化(虚拟代理)。如果你有一个偶尔使用的重量级服务对象,一直保持该对象运行会消耗系统资源时,可使用代理模式。访问......
  • python_高级
    元组的初始化39行分割字符串,然后直接放到元组里面通过静态方法或类方法实例对象然后返回34行和40行,静态方法和类方法创建实例对象,然后返回34行和41行76和79行,一般来说,创建实例对象都是直接通过调用类名new一个实例对象,但是有时候,调用有些要传入__init__(......
  • 自定义Python版本ESL库访问FreeSWITCH
    环境:CentOS7.6_x64Python版本:3.9.12FreeSWITCH版本:1.10.9一、背景描述ESL库是FreeSWITCH对外提供的接口,使用起来很方便,但该库是基于C语言实现的,Python使用该库的话需要使用源码进行编译。如果使用系统自带的Python版本进行编译,过程会比较流畅,就不描述了。这里记录下使用自定义......