Python迭代器的用法,next()方法的调用
迭代器的用法:
首先说两个概念,一个是可迭代的对象,一个是迭代器对象,两个不同
可迭代的(Iterable):就是可以for循环取数据的,比如字典、列表、元组、字符串等,不可使用next()方法。
迭代器(Iterator),也是可以依次迭代取出数据的对象,在内存空间是这样存储的:<list_iterator object at 0x01E35770>占用内存小,并且可以使用next()方法依次取数据
可以使用isinstance()方法来判断一个对象是可迭代对象还是迭代器对象
比如:
>>> a = [x for x in range(3)] #生成一个列表
>>> from collections import Iterable #导入Iterable模块
>>> isinstance(a,Iterable) #使用isinstance(“”,Iterable)判断是否是可迭代的
True #返回True
>>> from collections import Iterator #导入Iterator模块
>>> isinstance(a,Iterator) #使用isinstance(“”,Iterator)判断是否是迭代器对象
False #返回False
从上面的结果可以看出来,列表是一个可迭代的对象,但是不是迭代器,同样的字典,元组,字符串也不是迭代器,另外,数字既不是迭代器对象,也不是可迭代的对象。
那么如何生成迭代器?
使用iter()方法
比如接着上面的 a = [x for x in range(3)],让b=iter(a)
b就变成了迭代器
>>> b = iter(a)
>>> b
<list_iterator object at 0x029CCD30> #b的返回值 是一个地址
>>> a
[0, 1, 2] #a还是原来的列表
这时候就可以对b使用next()方法来取值了:
>>> next(b) #第一次next(b),返回第一个元素 0
0
>>> next(b) #第二次next(b),返回第二个元素 1
1
>>> next(b) #第三次next(b),返回第三个元素 2
2
>>> next(b) #第四次next(b),列表只有三个元素,此时超出索引范围next()函数抛出了一个异常StopIteration
Traceback (most recent call last):
File "<pyshell#72>", line 1, in <module>
next(b)
StopIteration
Python迭代器的用法,next()方法的调用的更多相关文章
- Python 迭代器 & __iter__方法
转载来自: http://blog.csdn.net/bluebird_237/article/details/38894617 迭代器就是重复地做一些事情,可以简单的理解为循环,在python中实现 ...
- python迭代器-迭代器取值-for循环-生成器-yield-生成器表达式-常用内置方法-面向过程编程-05
迭代器 迭代器 迭代: # 更新换代(其实也是重复)的过程,每一次的迭代都必须基于上一次的结果(上一次与这一次之间必须是有关系的) 迭代器: # 迭代取值的工具 为什么用迭代器: # 迭代器提供了一种 ...
- python中List的sort方法的用法
python列表排序 简单记一下python中List的sort方法(或者sorted内建函数)的用法. 关键字: python列表排序 python字典排序 sorted List的元素可以是各种东 ...
- 【转】python中List的sort方法(或者sorted内建函数)的用法
原始出处:http://gaopenghigh.iteye.com/blog/1483864 python列表排序 简单记一下python中List的sort方法(或者sorted内建函数)的用法. ...
- 列表[‘hello’ , ‘python’ ,’!’ ] 用多种方法拼接,并输出’hello python !’ 以及join()在python中的用法简介
列表[‘hello’ , ‘python’ ,’!’ ] 用多种方法拼接,并输出’hello python !’ 使用字符串链接的四种方法都可以创建 字符串拼接一共有四种方法,也可以应用到列表的拼接中 ...
- python中列表元素连接方法join用法实例
python中列表元素连接方法join用法实例 这篇文章主要介绍了python中列表元素连接方法join用法,实例分析了Python中join方法的使用技巧,非常具有实用价值,分享给大家供大家参考. ...
- 第8.6节 Python类中的__new__方法深入剖析:调用父类__new__方法参数的困惑
上节<第8.5节 Python类中的__new__方法和构造方法__init__关系深入剖析:执行顺序及参数关系案例详解>通过案例详细分析了两个方法的执行顺序,不知大家是否注意到了,在上述 ...
- Python基础:绑定和方法调用
首先,方法仅仅是类内部定义的函数,也就是说,方法是类属性而不是实例属性. 其次方法有两种被调用的方式:调用绑定的方法和调用未绑定的方法. 当存在一个实例时,方法才被认为绑定到了那个实例上,没有实例时方 ...
- python迭代器与iter()函数实例教程
python迭代器与iter()函数实例教程 发布时间:2014-07-16编辑:脚本学堂 本文介绍了python迭代器与iter()函数的用法,Python 的迭代无缝地支持序列对象,而且它还允许程 ...
随机推荐
- java多层嵌套集合的json,如何获取多层集合中所需要的value
就很简单的一个问题折磨了整整一天,好在压抑的心情终于释放了,终于闲下来觉得是不是应该记录一下. 首先这个json串是从外网接口返回的数据,想要了解的朋友们可以复制到json解析器中看一下格式:http ...
- IT兄弟连 HTML5教程 CSS3属性特效 盒模型阴影
除了为文字添加阴影,我们还可以为盒模型添加阴影.盒模型阴影的属性名称为box-shadow,此属性与text-shadow一样有4个值,前两个值分别表示水平方向位移距离和垂直方向的位移距离,第三个值表 ...
- python通过http下载文件的方法
1.通过requests.get方法 r = requests.get("http://200.20.3.20:8080/job/Compile/job/aaa/496/artifact/b ...
- .net core百万设备连接服务和硬件需求测试
随着物联网的普及,服务应用将面对大量物联设备处理:早期.NET在通讯上的处理能力一直给人的印像并不怎样,但net core经历过大量的优化后在各个模块的处理性能都有着比较出色的提升,针对网络方向的处理 ...
- Xamarin 开发环境搭建
一.安装环境 打开 Visual Studio Installer,点击修改,然后勾选 "使用 .NET 的移动开发" 二.移动SDK SDK默认被放置在了E:\Program F ...
- 更改Dynamics 365 Customer Engagement本地部署的高级配置
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- 08-Node.js学习笔记-静态资源访问
静态资源 服务器端不需要处理,可以直接响应给客户端的资源就是静态资源,例如css,javaScript,image文件 动态资源 相同的请求地址不同的响应资源,这种资源就是动态资源 http://ww ...
- canvas应用
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- tensorflow和pytorch教程
https://github.com/dragen1860/Deep-Learning-with-TensorFlow-book
- day99_12_3numpy的索引以及pandas的两个数据结构。
一.索引与切片. nump的索引和python中的索引差不多,都是左开右闭区间. 如一个普通的array的索引,是由0开始的: res = np.array([1,2,3,4,5]) #### npa ...