我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【26】Python Iterator笔

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【26】Python Iterator笔

在讲何为迭代器之前,要区分一件事:Iterable可迭代与Iterator迭代器的区别。

可以直接作用域for循环的数据数据类型有以下几种:
一类是集合数据类型,如:list、dict、str、set、tuple等
一类是generator,包括生成器和带yield的generator function
这些是可以直接作用于for循环的对象统称为可迭代对象:Iterable
可以使用isinstance()用作判断一个对象是否是Iterable对象

from collections import Iterable
print(isinstance([],Iterable))  ##list列表 #True
print(isinstance({},Iterable))  ##dict字典 #True
print(isinstance("abc",Iterable)) ##str字符串 #True
print(isinstance(1,Iterable)) ##num数字 False
print(isinstance((x for x in range(10)),Iterable)) ##加上for循环 True

返回True说明是Iterable对象。
而生成器generator不但可以作用域for循环,还可以被next函数不断调用并返回下一个值,知道最后抛出异常StopIteration错误表示无法继续返回下一个值。

可以进行for循环并且还可以用next不断返回下一个值的称为迭代器:Iterator
可以使用isinstance用作判断一个对象是否是Iterator对象

from collections import Iterator
print(isinstance([],Iterator))  ##list列表 #False
print(isinstance({},Iterator))  ##dict字典 #False
print(isinstance("abc",Iterator)) ##str字符串 #False
print(isinstance(1,Iterator)) ##num数字 False
print(isinstance((x for x in range(10)),Iterator)) ##加上for循环 True

生成器generator都是Iterator对象,但list、dict、str虽然是Iterable,但却并不是Iterator。
把list、dict、str变为Iterable可以使用iter函数。

from collections import Iterator
print(isinstance(iter([]),Iterator))  ##list列表 True
print(isinstance(iter({}),Iterator))  ##dict字典 True
print(isinstance(iter("abc"),Iterator)) ##str字符串 True

你可能会问,为什么list、dict、str等数据类型不是Iterator?
这是因为Python的Iterator对象表示的是一个数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误。可以把这个数据流看做是一个有序序列,但我们却不能提前知道序列的长度,只能不断通过next()函数实现按需计算下一个数据,所以Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算。
Iterator甚至可以表示一个无限大的数据流,例如全体自然数。而使用list是永远不可能存储全体自然数的。


总结:
1.凡是可以作用域for循环的都是Iterable
2.凡是可以next的函数对象都是Iterator类型,它们表示一个惰性计算的序列。
3.集合数据类型list、str、dict等都是Iterable但不是Iterator,不过可以通过iter函数获得一个Iterator对象。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【26】Python Iterator笔

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

下载Word文档

猜你喜欢

【26】Python Iterator笔

在讲何为迭代器之前,要区分一件事:Iterable可迭代与Iterator迭代器的区别。可以直接作用域for循环的数据数据类型有以下几种:一类是集合数据类型,如:list、dict、str、set、tuple等一类是generator,包括
2023-01-31

Python学习笔记(1~26页)(《H

大脑会尽力记住确实重要的事情,它不会费心地去记乏味的东西。    与单纯的文字相比,图片更能让人记得住,通过图片,学习效率会更高(图片中夹杂解说文字)。    如果你发现刚看得东西,立刻就忘记,那你该歇歇了。    睡觉前不要看别的书,至少
2023-01-31

MySQL学习笔记(26):日志

本文更新于2020-05-03,使用MySQL 5.7,操作系统为Deepin 15.4。目录错误日志二进制日志查询日志慢查询日志其他日志分析工具MySQL有4种日志:错误日志、二进制日志(BINLOG)、查询日志、慢查询日志。错误日志错误日志记录了mysql
MySQL学习笔记(26):日志
2018-02-21

python iterator(迭代器)

迭代:重复做一件事iterable(可迭代)对象:支持“每次仅返回自身所包含的其中一个元素”的对象iterable对象实现了__iter__方法     序列类型,如:list、str、tuple     非序列类型,如:dict、file
2023-01-31

26. Python 对 mysql 的

mysql数据库现在已经成为市场占有率最高的数据库,在开发过程中,很多情况下我们都需要操作mysql,所以对于python操作mysql的了解是必不可少的。Python标准数据库接口为Python DB-API, Python DB-API
2023-01-31

python中的iterator和"lazy iterator"区别介绍

这篇文章主要介绍了python中的iterator和 “lazy iterator“之间有什么区别,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-14

python中的iterator和"lazy iterator"区别是什么

这篇文章主要介绍了python中的iterator和"lazy iterator"区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python中的iterator和"lazy iterator"区别是什
2023-07-05

Python中Iterator迭代器的使用杂谈

迭代器是一种支持next()操作的对象。它包含一组元素,当执行next()操作时,返回其中一个元素;当所有元素都被返回后,生成一个StopIteration异常。>>>a=[1,2,3] >>>ia=iter(a) >>>next(ia)
2022-06-04

Python爬虫入门教程 26-100

1. 知乎文章图片爬取器之二博客背景昨天写了知乎文章图片爬取器的一部分代码,针对知乎问题的答案json进行了数据抓取,博客中出现了部分写死的内容,今天把那部分信息调整完毕,并且将图片下载完善到代码中去。首先,需要获取任意知乎的问题,只需要你
2023-01-30

第26讲 python文件的格式化写入

s="xxx%d yyy%s\n" % (28,'jeapedu')file_obj.write(s)fd=open('format.txt','w')head='%10s %10s %10s \n' % ('ID','Name','Rec
2023-01-31

Python面向对象编程Day 26部分

五大数据类型:整型、字符串、列表、元组、字典多态概念指出了对象如何通过他们共同的属性和动作来操作和访问,而不需考虑他们具体的类、多态表明了动态(又名:运行时)绑定的存在,允许重载及运行时类型确定和验证。多态是继承的改变和扩展的实现机制,即调
2023-01-30

python中实现迭代器(iterator)的方法示例

概述 迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 延迟计算或惰性求值 (Lazy evaluation) 迭代器不要求你事先准备好整个迭代过程中所有的元素。仅仅
2022-06-04

Python笔记

列表[List] 元组(truple) 字典{dict}# 列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推# list comprehension[i for i in range(10)]#
2023-01-31

python 随笔

# -*- coding: cp936 -*-import os,sys,time,smtplib,poplib#python -m BaseHTTPServer 80 在运行里面运行############################
2023-01-31

[PYTHON]python 基础笔记(

10. 编写一个Python脚本问题我提出的问题是: 我想要一个可以为我的所有重要文件创建备份的程序。尽管这是一个简单的问题,但是问题本身并没有给我们足够的信息来解决它。进一步的分析是必需的。例如,我们如何确定该备份哪些文件?备份保存在哪里
2023-01-31

python笔记(一)

字符串处理单双引号一样.title():将每个单词的首字母变为大写,其余小写(不管原来是什么样).upper():将字符串中所有字母变为大写.lower():将字符串中所有字母变为小写.strip():删除行首和行末的空白(空格和制表符)(
2023-01-31

python openpyxl笔记

from openpyxl import Workbookwb = Workbook()ws = wb.active指定sheetwb.create_sheet("mySheet")ws = wb.get_sheet_by_name("my
2023-06-01

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录