记录一下iter()的用法
iter()迭代器、next()函数的相关用法和遇到的问题
一、iter() 函数。
iter() 函数生成迭代器
1、在Python里iterable被认为是一类对象,这类对象能够一次返回它的一个成员(也就是元素)。抽象一点就是适合迭代的对象。
2、最白话的就是一个数组、字符串、列表都是iterable的.
3、如果一个对象是interable的,表示它可以被遍历。实际上,任何具有__iter__()或__getitem__()方法的对象,Python就认为它是一个iterable。
4、Python里有大量内置的iterable类型,如: list,str,tuple,dict,file,xrange等。使用内置的iter()函数来生成,
所以iterable意思为迭代,可以理解为连续的一组数据,可以遍历的数据,包含内置的string、list、dict、tuple、set()
作者:Babyzpj
链接:https://www.jianshu.com/p/6b7806c4f54a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
1、最基本的list_interator示例如下:
a = [3,4,5,6,7]
b = iter(a)
print(b)
for i in b:
print(i)
输出的结果为:
2、dict_keyiterator同理:
a = {"cat":3,"dog":4}
b = iter(a)
print(b)
for i in b:
print(i)
print(a[i])
输出的结果为:
二、next()函数
next() 返回迭代器的下一个项目。
next() 函数要和生成迭代器的 iter() 函数一起使用。
1、按如下调用,依次返回迭代器中的元素
a = {"cat":3,"dog":4}
b = iter(a)
print(next(b))
print(next(b))
2、若超出迭代器长度则会报出异常
a = {"cat":3,"dog":4}
b = iter(a)
print(next(b))
print(next(b))
print(next(b))
3、第二个参数设置后,在超出长度时返回默认值
a = {"cat":3,"dog":4}
b = iter(a)
print(next(b,0))
print(next(b,0))
print(next(b,0))
三、使用时遇到的问题
我发现当需要多次使用同一个迭代器时,会出现问题
a = [3,4,5,6,7]
b = iter(a)
for i in b:
print(i)
if i==5:
break
print("-----------------------")
for i in b:
print(i)
这里我想循环b两次,但是结果和想象的不同
查阅了相关介绍,这是因为在迭代时,每取一个值就会调用上面介绍的__next__方法指向下一个元素。所以我理解的迭代器是一次性的。
更多推荐
所有评论(0)