广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python高级-迭代器(18)
  • 703
分享到

python高级-迭代器(18)

高级迭代python 2023-01-31 00:01:13 703人浏览 泡泡鱼

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

摘要

一、什么是迭代器 迭代是访问集合元素的⼀种⽅式。 迭代器是⼀个可以记住遍历的位置的对象。 迭代器对象从集合的第⼀个元素开始访问,直到所有的元素被访问完结束。 迭代器只能往前不会后退   二、可迭代对象 直接作⽤于 for 循环的数据类

一、什么是迭代器

  • 迭代是访问集合元素的⼀种⽅式。
  • 迭代器是⼀个可以记住遍历的位置的对象。
  • 迭代器对象从集合的第⼀个元素开始访问,直到所有的元素被访问完结束。
  • 迭代器只能往前不会后退

 

二、可迭代对象

直接作⽤于 for 循环的数据类型有以下⼏种:

  • ⼀类是集合数据类型:如 list 、 tuple 、 dict 、 set 、 str 等;
  • ⼀类是generator ,包括⽣成器和带 yield 的generator function。

这些可以直接作⽤于 for 循环的对象统称为可迭代对象: Iterable

 

三、判断是否可以迭代

可以使⽤ isinstance() 判断⼀个对象是否是 Iterable 对象:

#从collections.abc模块导入Iterable工具
from collections.abc import Iterable
#判断列表是否可以迭代
print(isinstance([],Iterable))
#判断字典是否可以迭代
print(isinstance({},Iterable))
#判断生成器是否可以迭代
print(isinstance((x for x in range(1,10)),Iterable))
#判断字符串是否可以迭代
print(isinstance("abc",Iterable))
#判断整形是否可以迭代
print(isinstance(100,Iterable))

运行结果为:

True
True
True
True
False

可以看出,列表、字典、生成器、字符串都是可以被迭代的,而整形常量不可以被迭代

 

四、迭代器

可以被next()函数调⽤并不断返回下⼀个值的对象称为迭代器:Iterator。
可以使⽤ isinstance() 判断⼀个对象是否是 Iterator 对象:

#从collections.abc模块导入Iterator工具
from collections.abc import Iterator
#判断列表是否可以迭代
print(isinstance([],Iterator))
#判断字典是否可以迭代
print(isinstance({},Iterator))
#判断生成器是否可以迭代
print(isinstance((x for x in range(1,10)),Iterator))
#判断字符串是否可以迭代
print(isinstance("abc",Iterator))
#判断整形是否可以迭代
print(isinstance(100,Iterator))

运行结果为:

False
False
True
False
False

注意:

  • 判断是否可以被迭代使用的是 Iterable,而判断是否是迭代器使用的是 Iterator,不一样的 。
  • 生成器也是迭代器
  • 列表、字典、字符串虽然可以被迭代,但是不是迭代器,这就说明了,迭代器一定可以迭代,但是可以迭代的不一定是迭代器。这个道理就和鱼会游泳,但是会游泳的不一定是鱼,一个道理。

 

五、iter()函数

⽣成器是迭代器对象,但列表、字典 、字符串虽然是可迭代的,却不是迭代器。把列表、字典、字符串等可迭代对象变成迭代器可以使⽤ iter() 函数:

#从collections.abc模块导入Iterator工具
from collections.abc import Iterator
#没有使用iter()函数
print(isinstance([],Iterator))
print(isinstance("abc",Iterator))

#使用iter()函数
print(isinstance(iter([]),Iterator))
print(isinstance(iter("abc"),Iterator))

运行结果为:

False
False
True
True

 

六、使用迭代器完成for循环的底层实现

for x in [1,2,3,4,5]:
    print(x)

#完全等价于

# 首先获得Iterator对象:
it = iter([1, 2, 3, 4, 5])
# 循环:
while True:
    try:
        # 获得下一个值:
        x = next(it)
        print(x)
    except StopIteration:
        # 遇到StopIteration就退出循环
        break

总结

 

  • 凡是可作⽤于 for 循环的对象都是 Iterable 类型;
  • 凡是可作⽤于 next() 函数的对象都是 Iterator 类型
  • 集合数据类型如 list 、 dict 、 str 等是 Iterable 但不是 Iterator ,不过可以通过 iter() 函数获得⼀个 Iterator 对象。
  • 迭代器对象就是实现了iter() 和 next()方法的对象.其中iter()返回迭代器本身,而next()返回容器的下一个元素,在结尾处引发StopInteration异常.
  • 迭代器的优点:省内存.它是一种通过延时创建的方式生成一个序列,只有在需要的时候才被创建.
  • 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问结束,只能往前不能后退

 

 

--结束END--

本文标题: python高级-迭代器(18)

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

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

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

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

下载Word文档
猜你喜欢
  • python高级-迭代器(18)
    一、什么是迭代器 迭代是访问集合元素的⼀种⽅式。 迭代器是⼀个可以记住遍历的位置的对象。 迭代器对象从集合的第⼀个元素开始访问,直到所有的元素被访问完结束。 迭代器只能往前不会后退   二、可迭代对象 直接作⽤于 for 循环的数据类...
    99+
    2023-01-31
    高级 迭代 python
  • Python中的迭代器与生成器高级用法解析
    迭代器 迭代器是依附于迭代协议的对象——基本意味它有一个next方法(method),当调用时,返回序列中的下一个项目。当无项目可返回时,引发(raise)StopIteration异常。 迭代对象允许一次...
    99+
    2022-06-04
    生成器 高级 迭代
  • python迭代、可迭代对象、迭代器及生
    迭代 通常意义上的迭代是指:重复执行一系列运算,从前面的量依次推出后面的量的过程,每一次迭代的结果,会作为下一次迭代的初始值。 在c、c++、java等编程语言中的for循环语句,就是一个迭代过程,例如: for(int i=0;i&l...
    99+
    2023-01-30
    迭代 器及 对象
  • 详解Python迭代和迭代器
    我们将要来学习python的重要概念迭代和迭代器,通过简单实用的例子如列表迭代器和xrange。 可迭代 一个对象,物理或者虚拟存储的序列。list,tuple,strins,dicttionary,set...
    99+
    2022-06-04
    迭代 详解 Python
  • Python迭代和迭代器详解
    迭代器 迭代器(iterator)有时又称游标(cursor)是程式设计的软件设计模式,可在容器物件(container,例如链表或阵列)上遍访的界面,设计人员无需关心容器物件的内存分配的实现细节。 摘自维...
    99+
    2022-06-04
    迭代 详解 Python
  • python 迭代器
    我们已经知道,可以直接作用于for循环的数据类型有以下几种:一类是集合数据类型,如list、tuple、dict、set、str等;一类是generator,包括生成器和带yield的generator function。这些可以直接作用于...
    99+
    2023-01-30
    迭代 python
  • python迭代器
    迭代器可以直接作用for循环的数据类型我们已经知道,可以直接作用for循环的数据类型有以下几种:  一类是集合数据类型 如:list、tuple、dict、set、str等;  一类是generator,包括生成器和带yield的gener...
    99+
    2023-01-31
    迭代 python
  • Python进阶:迭代器与迭代器切片
    2018-12-31 更新声明:切片系列文章本是分三篇写成,现已合并成一篇。合并后,修正了一些严重的错误(如自定义序列切片的部分),还对行文结构与章节衔接做了大量改动。原系列的单篇就不删除了,毕竟也是有单独成篇的作用。特此声明,请阅读改...
    99+
    2023-01-30
    进阶 迭代 切片
  • Python之迭代器
    ''' 查看可对某个变量或数据类型执行的操作 : dir(var) 迭代器 : 在同一个代码块中,依次取出可迭代对象中的每一个元素     特点 : 完全忽视可迭代对象的索引以及长度,只关注下一块内存是否有值;     实现原理(猜测) :...
    99+
    2023-01-31
    迭代 Python
  • 006-Python迭代器
    什么是迭代器 先说一些概念性的东西: 可迭代对象:列表、元组、集合、字符串、bytes、bytearray、字典和生成器。 有__iter__的对象叫可迭代对象;有__next__方法的可迭代对象叫迭代器。 可迭代对象可以用在for in...
    99+
    2023-01-31
    迭代 Python
  • python iterator(迭代器)
    迭代:重复做一件事iterable(可迭代)对象:支持“每次仅返回自身所包含的其中一个元素”的对象iterable对象实现了__iter__方法     序列类型,如:list、str、tuple     非序列类型,如:dict、file...
    99+
    2023-01-31
    迭代 python iterator
  • Python中迭代和迭代器是什么
    本篇文章给大家分享的是有关Python中迭代和迭代器是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。可迭代一个对象,物理或者虚拟存储的序列。list,tuple,strin...
    99+
    2023-06-17
  • 浅谈python迭代器
    1、yield,将函数变为 generator (生成器) 例如:斐波那契数列 def fib(num): a, b, c = 1, 0, 1     while a <= num: ...
    99+
    2022-06-04
    浅谈 迭代 python
  • Python全栈之迭代器和高阶函数
    目录1. lambda表达式2. locals和globals3. 迭代器小提示:4. map高阶函数5. reduce高阶函数6. filter高阶函数7. sorted高阶函数8...
    99+
    2022-11-12
  • python 生成器&迭代器
      一、生成器 1、列表生成器:列表生成式就像是一个厨师,他只会做这n(n为任意整数)道菜,想吃甚麽做甚麽,不吃不做,不浪费空间;而列表表达式就相当于已经做好的n盘菜,占用空间。2、生成器的创建方法: s = (x*2 for x in...
    99+
    2023-01-30
    生成器 迭代 python
  • Python高级特性之切片迭代列表生成式及生成器详解
    目录切片迭代列表生成式生成器迭代器在Python中,代码越少越好、越简单越好。基于这一思想,需要掌握Python中非常有用的高级特性,1行代码能实现的功能,决不写5行代码。代码越少,...
    99+
    2022-11-12
  • python学习之可迭代对象、迭代器、生成器
    Iterable – 可迭代对象 能够逐一返回其成员项的对象。 可迭代对象的例子包括所有序列类型 (例如 list, str 和 tuple) 以及某些非序列类型例如 dict, 文...
    99+
    2022-11-12
  • Python 迭代器Iterator详情
    目录前言1. 什么是迭代器?2. 迭代器类型3. 迭代器分类容器迭代器遍历迭代器自定义迭代器总结前言 当我们需要对列表(list)、元组(tuple)、字典(dictionary)和...
    99+
    2022-11-11
  • python yield迭代器详解
    目录一、yield迭代器二、使用步骤1.引入库2.读入数据总结一、yield迭代器 在python深度学习模型读取数据时,经常遇到yield,互联网搜索后,将比较容易理解的说明记录一...
    99+
    2022-11-13
    python yield python yield迭代器
  • Python 拓展之迭代器
    写在之前 今天来讲讲「迭代器」的内容,其实已经拖了好多天了,感觉再不写就要忘记了。「迭代」相信对你来说已经不陌生了,我前面曾经专门用一篇文章来讲,如果你已经没有什么印象的话,就再点进去看看(零基础学习 Python 之初识迭代)。 迭代器...
    99+
    2023-01-30
    迭代 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作