跟着太白老师学python day11 可迭代对象和迭代器

如果对象的属性中有__iter__属性就说明是可迭代的,容器类的数据类型都是可迭代对象

如果对象的属性中既有__iter__属性也有__next__属性,就说明这个对象是迭代器

 

如何判断一个函数是不是可迭代的,是不是迭代器

方法一

s = '123'
print('__iter__' in dir(s))  #如果是可迭代内部将存在__iter__属性
f = open('01 今日内容大纲', encoding='utf-8', mode='r')
print('__next__' in dir(f))  #如果是迭代器内置属性有 __iter__ 和 __next__

方法二

from collections.abc import Iterable
from collections.abc import Iterator
print(isinstance(s, Iterable))
print(isinstance(f, Iterator))

 

可迭代对象转换为迭代器

方法一

s_1 = s.__iter__()

方法二

s_2 = iter(s)

 

迭代器的取值f.__next__() 每次都只能取一次

可迭代对象不能取值, 迭代器可以取值的

迭代器非常节省空间,内存中只存在一个值

迭代器每次只取一个值

迭代器是单向的,不会反复一路走到黑

迭代器的应用场景:数量大,且只用于取值

 

运用__next__ 进行取值操作

iter1 = s1.__iter__()
while True:try:print(iter1.__next__())  #一直取值except StopIteration:    #接受读取完后的异常处理break

 

转载于:https://www.cnblogs.com/my-love-is-python/p/9494034.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搅局者奇虎360:特供机背后的周式隐忧

摘要:从未涉足制造,将来也“绝不参与制造”的360,却声称要进军智能手机。从未涉足制造,将来也“绝不参与制造”的360,却声称要进军智能手机。 5月4日晚间,“长达半年的思考”后,奇虎360董事长周…

数据结构基础入门知识

数据结构基础入门知识 ------ 数据结构:理解和练习《异类-不一样的成功启示录》IP/26 192IP/25 128IP/24192.12864 3216 2 1 NTP:时间同步服务器高手都是最仔细的,严谨的 telnet 查看某个端口是否可用,是否是开启状态的要有探索冒险的精神 --…

Linux下安装jdk8步骤详述

见:https://www.cnblogs.com/shihaiming/p/5809553.html 0.下载jdk8 登录网址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 选择对应jdk版本下载。(可在Windows下下载完成后,通过文件夹…

用Kotlin撸一个图片压缩插件-实战篇(三)

简述: 由于个人原因,已经有很长一段时间没有写过文章,有句话是那么说的只要开始就不会太晚,所以我们开始《用Kotlin撸一个图片压缩插件》系列文章最后一篇实战篇。实际上我已经把源码发布到了GitHub,代码很简单。有了前两篇文章的…

后端进阶技术总结

1、SDK与API的区别? SDK是Software Development Kit的缩写,即软件开发工具包。可以把SDK想象成一个虚拟的程序包,在这个程序包中有一份做好的软件功能,这份程序包几乎是全封闭的,通过接口联通外界,相应的接…

最简容器化动手小实践——再战flappybird

《Flappy Bird》是一名越南开发者所开发的游戏,这款游戏的主要内容是帮助一只小鸟穿越水管的层层阻碍,玩家所需要的只是点击屏幕从而调整小鸟的高度。而令这款游戏与众不同的是,这款游戏的难度夸张的惊人,大多数玩家在初次上手之后…

为什么电影电视帧率不取整数?

英文名称:time code时间码概念时间码(time code)是摄像机在记录图像信号的时候,针对每一幅图像记录的唯一的时间编码。一种应用于流的数字信号。该信号为视频中的每个帧都分配一个数字,用以表示小时、分钟、秒钟和帧数…

linux下用rpm 安装jdk

1.下载jdk的rpm安装包,这里以jdk-7u4-linux-i586.rpm为例进行说明 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2. 将jdk-7u4-linux-i586.rpm 移动到合适的安装目录上,安装软件不要在/home路径下&#xf…

FFT 入门

推荐博客 : https://oi.men.ci/fft-notes/ 卷积的理解 : https://www.zhihu.com/question/22298352?rf21686447 题目链接 :http://uoj.ac/problem/34 这是一道模板题。给你两个多项式,请输出乘起来后的多项式。输入格式第一行两个…

MPEG4视频压缩编码技术详解

MPEG全称是Moving Pictures Experts Group,它是“动态图象专家组”的英文缩写,该专家组成立于1988年,致力于运动图像及其伴音的压缩编码标准化工作,原先他们打算开发MPEG1、MPEG2、MPEG3和MPEG4四个版本,以适用于不同带…

oracle orion hugepages_settings.sh(支持OEL 7,4.1内核)

orion需要首先配置hugepage,否则会出现下列错误。[rootyyxxdb01 ~]# /opt/app/11.2.0/grid_home/bin/orion -run oltp -testname mytestORION: ORacle IO Numbers -- Version 11.2.0.4.0************************ Large Pages Information *******************Param…

eclipse启动出现“An Error has Occurred. See the log file”解决方法

见:http://blog.csdn.net/ww130929/article/details/52652222 这段时间开发java的项目,刚开始启动Eclipse的时候经常遇到这个问题,写这篇博客来记录解决方法。 1.删除工程目录下的: “.metadata/.plugins/org.eclipse.core.resour…

初识NIO之Java小Demo

Java中的IO、NIO、AIO: BIO:在Java1.4之前,我们建立网络连接均使用BIO,属于同步阻塞IO。默认情况下,当有一条请求接入就有一条线程专门接待。所以,在客户端向服务端请求时,会询问是否有空闲线程…

RTP协议详解

RTP协议分析 第1章. RTP概述 1.1. RTP是什么 RTP全名是Real-time Transport Protocol(实时传输协议)。它是IETF提出的一个标准,对应的RFC文档为RFC3550(RFC1889为其过期版本)。RFC3550不仅定义了RTP&#xff0…

线程状态转换

一、线程状态转换 新建(New) 创建后尚未启动。 可运行(Runnable) 可能正在运行,也可能正在等待 CPU 时间片。 包含了操作系统线程状态中的 Running 和 Ready。 阻塞(Blocking) 等待获取一个排它…

Eclipse中启动tomcat报错java.lang.OutOfMemoryError: PermGen space的解决方法

见:http://outofmemory.cn/java/OutOfMemoryError/outofmemoryerror-permgen-space-in-tomcat-with-eclipse 有的项目引用了太多的jar包,或者反射生成了太多的类,异或有太多的常量池,就有可能会报java.lang.OutOfMemoryError: Per…

MPEG-4 AVC/H.264 信息

作者:haibara 来源:pcicp.com 本FAQ由(haibara)翻译,期间受到kaito_mkid(pcicp)帮助,在此感谢,由于Newbie的关系,如有翻译错误,还请各位指出&…

eclipse搜索关键字

见:https://jingyan.baidu.com/article/e6c8503c1a60d2e54f1a18e3.html

装饰器语法糖运用

装饰器语法糖运用 前言:函数名是一个特性的变量,可以作为容器的元素,也可以作为函数的参数,也可以当做返回值。闭包定义: 内层函数对外层函数(非全局)变量的引用,这个内层函数就可以…

fb 4.7英文版 显示行数

窗口(window)首选项(Preference)—>常规(General)—>编辑器(Editors)—>文本编辑器(Text Editors)—>“显示行号”(Show line number…