一、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__方法指向下一个元素。所以我理解的迭代器是一次性的。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐