判断是否是可迭代的

from collections import Iterable

a = [1, 2, 3, 4]
b = (4, 5, 6, 7)
c = {"A", "B", "C", "D"}
d = {"name": "weihu", "age": 18}

# 判断a列表是不是可迭代的对象
print(isinstance(a, Iterable))
print(isinstance(b, Iterable))
print(isinstance(c, Iterable))
print(isinstance(d, Iterable))

 

把可迭代的容器,转化成迭代器

mylist = [1, 2, 3, 4]
# 把列表变成一个迭代器
mylistiter = mylist.__iter__()

# 挨个挨个取值
print(mylistiter.__next__())
print(mylistiter.__next__())
print(mylistiter.__next__())
print(mylistiter.__next__())
# 取到最后一个值后,再调用__next__()方法会报异常
# print(mylistiter.__next__())

迭代器遵循迭代器协议:必须拥有__iter__方法和__next__方法。

 

可迭代对象:

  拥有__iter__方法

  特点:惰性运算

  例如:range(),str,list,tuple,dict,set

迭代器Iterator:

  拥有__iter__方法和__next__方法

  例如:iter(range()),iter(str),iter(list),iter(tuple),iter(dict),iter(set),reversed(list_o),map(func,list_o),filter(func,list_o),file_o