python迭代器使用_Python迭代器的用法

我们在前面使用过语句“for x in列表对象”,这就表示列表对象是可迭代的(Iterable)。那么如何判断某个对象是否可迭代呢?答案是可以使用collections.Iterable类来判断。

如下面的代码所示,列表是可迭代的,整数是不可迭代的,字符串是可迭代的。

>>> from collections import Iterable # 引入Iterable类

>>> isinstance([], Iterable) # 列表是可迭代的

True

>>> isinstance(12, Iterable) # 整数是不可迭代的

False

>>> isinstance("12", Iterable) # 字符串是可迭代的

True

另外一个概念是迭代器(Iterator)。它可以作为内置函数 next() 的参数,每次按照一定顺序得到其中一个元素。但比较有趣的是,列表不是迭代器。同样可以用 collections.Iterator 类来判断某个对象是否是迭代器。

如下面的代码所示,列表和字符串都不是迭代器:

>>> from collections import Iterator # 引入Iterator类

>>> isinstance([], Iterator) # 列表不是迭代器

False

>>> isinstance("abc", Iterator) # 字符串也不是迭代器

False

那么列表是否可以作为 next() 的参数呢?答案是不可以。例如下面的代码:

>>> a = [1, 2, 3] # 创建列表对象a

>>> next(a) # 使用内置的next()接口函数,发生错误

Traceback (most recent call last):

File "", line 1, in

TypeError: list object is not an iterator

这比较容易理解,因为我们没有指定当前位置,但可以使用另外一个内置函数 iter() 来将其转换成 Iterator。下面的代码演示了这种用法:

>>> from collections import Iterable # 引入Iterable和Iterator类

>>> from collections import Iterator

>>> a = [1, 2, 3] # 创建列表对象a

>>> isinstance(a, Iterable) # 列表对象是可迭代的

True

>>> isinstance(a, Iterator) # 列表对象不是迭代器

False

>>> it_a = iter(a) # 从列表对象得到迭代器it_a

>>> isinstance(it_a, Iterable) # it_a是可迭代的,也是迭代器

True

>>> isinstance(it_a, Iterator)

True

>>> type(it_a) # it_a是列表型迭代器

>>> next(it_a) # 得到一个数据

1

>>> it_a.next() # 使用另外一种方式得到一个数据

2

>>> next(it_a)

3

>>> next(it_a) # 没有数据了,抛出异常

Traceback (most recent call last):

File "", line 1, in

StopIteration

迭代器的一个特点是它只能使用一次,从头部走到尾部。如果希望再次走一遍,只能创建一个新的迭代器。

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

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

相关文章

c语言求佩尔方程的解设计思路,c语言版 佩尔方程求最小正整数解及第k解(矩阵快速幂)...

佩尔方程讲解连接:若一个丢番图方程具有以下的形式:且为正整数,则称此方程为佩尔方程(英文:Pells equation 德文:Pellsche Gleichung) 若是完全平方数,则这个方程式只有解(实际上对任意的,都是解…

在Java EE 7中自动配置JMS资源

JMS 2.0(Java EE 7平台的一部分)引入了许多不错的功能 。 其中之一是能够声明JMS资源以进行自动部署。 Java EE 7之前的版本 使用Resource注入连接工厂 使用Resource查找目标位置(队列/主题) 拉出Session对象并使用它创建Messa…

python关键词提取源码_Python 结巴分词 关键词抽取分析

关键词抽取就是从文本里面把跟这篇文档意义最相关的一些词抽取出来。这个可以追溯到文献检索初期,当时还不支持全文搜索的时候,关键词就可以作为搜索这篇论文的词语。因此,目前依然可以在论文中看到关键词这一项。除了这些,关键词…

安卓欢迎界面和activity之间的跳转问题

使用安卓的UI界面,就不得不了解activity,由于actvity就像是一个form表单一样,全部的UI都呈如今这里,他能够承载全部的UI控件。INtent就是一个中继站一样。他负责组件之间的沟通。以下我们来说一下一个actvity跳转到还有一个actvit…

C语言输出最后一个空格去掉,新人提问:如何将输出时每行最后一个空格删除...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼如何将每行最后一个空格删除&#xff0c;使矩阵只有数字间有空格&#xff0c;没有多余空格&#xff1f;#include#includeint main(){int i,j,k,m,n,x,h,y;int a[15][15]{0};while(scanf("%d",&i)){k1;for(n1;n<i;…

android 9.0 https 适配,如何适配 Android 9.0? 在 Android 9.0 上发生 SSL handshake timed out 异常怎么解决...

Android 9.0 开始&#xff0c;默认不允许明文传输&#xff0c;所以在建立网络连接时会使用 https 连接&#xff0c;同时进行安全认证。如果应用没有做对应处理&#xff0c;即会发生上述异常。解决方法有两种&#xff1a;一. 在应用里声明允许明文传输.1. 在应用的 res/xml 文件…

java 7.函数-递归_带有谓词的Java中的函数样式-第1部分

java 7.函数-递归您一直在听到将要席卷全球的函数式编程&#xff0c;而您仍然坚持使用普通Java&#xff1f; 不用担心&#xff0c;因为您已经可以在日常Java中添加一些功能样式。 此外&#xff0c;它很有趣&#xff0c;可以节省许多代码行并减少错误。 什么是谓词&#xff1f; …

大话oraclerac集群、高可用性、备份与恢复_数腾Oracle RAC数据库灾备解决方案

“一个系统包含很多模块&#xff0c;数据库、前端、缓存、搜索、消息队列等&#xff0c;每个模块都需要做到高可用&#xff0c;才能保证整个系统的高可用。”数据库作为现代信息社会的基石&#xff0c;几乎所有的计算机应用软件都构建于数据库系统之上&#xff0c;对于数据库而…

Python学习笔记(随机数)

random模块的作用是产生随机数。 import random num random.randint(1,100) random.randint(a, b)可以生成一个a到b间的随机整数&#xff0c;包括a和b。 a、b都必须是整数&#xff0c;且必须b≥a。当等于的时候&#xff0c;比如&#xff1a; random.randint(3, 3) 的结果就永远…

android.mk 比较字变量,粉丝投稿 | 谈谈Android.mk

原标题&#xff1a;粉丝投稿 | 谈谈Android.mk本文由公号【你看上去真美】(微信号&#xff1a;tmac_lover)粉丝投稿&#xff0c;目前工作是Android系统rom定制开发&#xff0c;有同行可以关注一下。1. 为什么是Android.mk不知道有没有人想过&#xff0c;Android源码里为什么每个…

guava API整理

1&#xff0c;大纲 让我们来熟悉瓜娃&#xff0c;并体验下它的一些API,分成如下几个部分&#xff1a; IntroductionGuava Collection APIGuava Basic UtilitiesIO APICache API2&#xff0c;为神马选择瓜娃&#xff1f; 瓜娃是java API蛋糕上的冰激凌&#xff08;精华&#xff…

python水印 resized_如何改进Python中的水印图像?

我正在使用python为来自this的水印图像源代码import Imageimport ImageEnhanceimport randomdef _percent(var):"""Just a simple interface to the _val function with a more meaningful name."""return _val(var, True)def _int(var):"&…

智能包装结构,提高可测性

有很多方法可以将整个应用程序分为多个包。 我们可以在许多编程博客和论坛上找到有关按功能或按层打包的优缺点的讨论。 我想从可测试性开始讨论这个主题&#xff0c;看看它是否会带来任何有意义的结果。 首先&#xff0c;让我们尝试描述我们通常希望跨不同层在应用程序中进行…

Android面试题Service,Android面试题-IntentService源码分析

自定义控件联网工具数据库源码分析相关面试题Activity相关面试题Service相关面试题与XMPP相关面试题与性能优化相关面试题与登录相关面试题与开发相关面试题与人事相关面试题人事面试宝典IntentService是继承于Service并处理异步请求的一个类&#xff0c;在IntentService内有一…

OpenGL中的Shader

http://blog.csdn.net/huangcanjun187/article/details/52474365 学习总结自&#xff1a;http://learnopengl.com/#!Getting-started/Hello-Triangle http://learnopengl.com/#!Getting-started/Shaders 继上篇文章中提到&#xff0c;OpenGL是为了在GPU上同时跑成千上万个程序&…

python扫描端口脚本_python写的端口扫描脚本

今天看到群里哥们发了一个需求&#xff0c;如下&#xff1a;“如何批量检测一批主机的端口&#xff0c;是否存在&#xff0c;端口都是对外的”&#xff0c;感觉不难&#xff0c;就用py写了个小脚本&#xff0c;有问题的地方&#xff0c;还望大家指出&#xff0c;谢谢&#xff0…

在html中金色怎么写,ps金色数值是多少?

一些常用的金色表示值&#xff1a;R255&#xff0c;G215&#xff0c;B0R205&#xff0c;G127&#xff0c;B50R166&#xff0c;G124&#xff0c;B64R217&#xff0c;G217&#xff0c;B25关于金色rgb值&#xff0c;金色就是黄色&#xff0c;但是我们看到的一些金色效果只是用颜色…

JAVA编程规范-常量定义

1.【强制】不允许出现任何魔法值&#xff08;即未经定义的常量&#xff09;直接出现在代码中。反例&#xff1a; String key"Id#taobao_"tradeId&#xff1b;    cache.put(key, value); 2.【强制】long或者 Long初始赋值时&#xff0c;必须使用大写的 L&#xff…

python的逆袭之路_Python领域最伟大工程师Kenneth Reitz的逆袭之路

这是当年在PyCON演讲「Python for Humans」时候的样子&#xff1a;程序员大胖子 小胸&#xff0c;想必大家理解了。当时Kenneth Reitz本人还真一点都不介意&#xff0c;心宽体胖&#xff0c;还会自嘲。站在讲台的他&#xff0c;顶着一头洪金宝早期电影的蘑菇头&#xff0c;稚嫩…

hibernate jpa_教程:Hibernate,JPA –第1部分

hibernate jpa这是关于使用Hibernate和JPA的教程的第一部分。 这部分是对JPA和Hibernate的介绍。 第二部分将研究使用Spring ORM组合一个Spring MVC应用程序&#xff0c;以减少创建CRUD应用程序所需的代码量。 要完成此操作&#xff0c;您需要熟悉Maven&#xff0c;JUnit&#…