迭代器的用法:
首先说两个概念,一个是可迭代的对象,一个是迭代器对象,两个不同。可迭代的(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)
<list_iterator object at 0x029CCD30> #b的返回值 是一个地址
[0, 1, 2] #a还是原来的列表
这时候就可以对b使用next()方法来取值了:
>>> next(b) #第一次next(b),返回第一个元素 0
>>> next(b) #第二次next(b),返回第二个元素 1
>>> next(b) #第三次next(b),返回第三个元素 2
>>> next(b) #第四次next(b),列表只有三个元素,此时超出索引范围next()函数抛出了一个异常StopIteration
Traceback (most recent call last):
File "<pyshell#72>", line 1, in <module>
next(b)
StopIteration
迭代器的用法:首先说两个概念,一个是可迭代的对象,一个是迭代器对象,两个不同可迭代的(Iterable):就是可以for循环取数据的,比如字典、列表、元组、字符串等,不可使用next()方法。迭代器(Iterator),也是可以依次迭代取出数据的对象,在内存空间是这样存储的:<list_iterator object at 0x01E35770>占用内存小,并且可以使用next()方法依次取数据可以使用isinstance()方法来判断一个对象是可迭代对象还是迭代器对象.
本文实例讲述了
Python
迭代器
定义与简单
用法
。分享给大家供大家参考,具体如下:
一、什么是
迭代器
迭代,顾名思义就是重复做一些事很多次(就现在循环中做的那样)。
迭代器
是实现了__next__()
方法
的对象(这个
方法
在
调用
时不需要任何参数),它是访问可迭代序列的一种方式,通常其从序列的第一个元素开始访问,直到所有的元素都被访问才结束。 [注意]:
迭代器
只能前进不能后退
[
迭代器
的优点]:
使用
迭代器
不要求事先准备好整个迭代过程中的所有元素。
迭代器
仅仅在迭代到某个元素时才计算该元素,而在这之前或之后元素可以不存在或者被销毁。因此
迭代器
适合遍历一些数量巨大甚至无限的序列。
二、创建
迭代器
http://blog.csdn.net/baidu_36831253/article/details/778839411)先说
迭代器
:
迭代器
是访问集合元素的一种方式。
迭代器
对象从集合的第一个元素开始访问,知道所有的元素被访问完结束。
迭代器
只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退。
迭代器
有两个基本的
方法
next
方法
:返回
迭代器
的下一个元素
__iter__
方法
:返回迭代
生成器和
迭代器
都是用来遍历数据的工具,但它们之间有几个重要的区别:
1. 生成器是一种特殊的
迭代器
,它可以通过函数来创建。生成器函数使用`yield`关键字来返回数据,每次
调用
生成器函数会执行到`yield`,并返回`yield`后面的值,之后函数会被暂停,直到下一次
调用
。
2.
迭代器
是一种实现了`__iter__()`和`__next__()`
方法
的对象,可以使用`for...in`语句来遍历数据。
迭代器
每次通过`__next__()`
方法
返回一个数据,直到所有数据都被遍历完毕,之后会抛出`StopIteration`异常。
3. 生成器可以保存状态,即保留了函数执行的上下文,每次
调用
时会从上次暂停的位置继续执行。而
迭代器
不会保存状态,每次遍历数据时都是从数据的开头开始。
4. 由于生成器只在需要时才生成数据,可以节省大量的内存,因为不需要一次性生成所有数据,而是根据需要生成。而
迭代器
需要一次性加载所有数据到内存中,因此可能会占用大量的内存。
综上所述,生成器是一种特殊的
迭代器
,它可以通过函数来创建,并且可以在需要时生成数据,节省内存。
迭代器
需要一次性加载所有数据到内存中,而且不保存状态。
DSNet:Joint Semantic Learning for Object Detection in Inclement Weather Conditions
LcLc6666666:
tensorflow数据类型转换
Growup.:
Pytorch训练网络模型过程中Loss为负值的问题及其解决方案
粉面桃花:
解决wget下载https时报错 --no-check-certificate (不检查证书)
hongqipilang:
DSSD : Deconvolutional Single Shot Detector
德彪稳坐倒骑驴: