可迭代对象和迭代器
可迭代对象:可作用于for循环的都是可迭代对象,包括字符串、列表、元组、字典等,数字不可以for循环即不是可迭代对象
>>> from collections import Iterable
>>> print(isinstance("ABC",Iterable))
True
>>> print(isinstance([],Iterable))
True
>>> print(isinstance((),Iterable))
True
>>> print(isinstance({},Iterable))
True
>>> print(isinstance(12345,Iterable))
False
迭代器:可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator,迭代器的计算是惰性的,只有在需要返回下一个数据时才进行计算
生成器有next()方法,所以生成器一定是迭代器
>>> from collections import Iterator
>>> isinstance((x for x in range(5)),Iterator)
True
>>> isinstance([],Iterator)
False
>>> isinstance((),Iterator)
False
>>> isinstance({},Iterator)
False
>>> isinstance("ABc",Iterator)
False
列表、字典、元组、字符串等是可迭代对象确并不是迭代器,如需变成迭代器可使用iter方法
1 >>> isinstance(iter([]),Iterator) 2 True 3 >>> a = [1,2,3] 4 >>> isinstance(a,Iterator) 5 False 6 >>> isinstance(iter(a),Iterator) 7 True 8 >>> b = iter(a) 9 >>> b 10 <list_iterator object at 0x000002526DE70940> 11 >>> b.__next__() 12 1 13 >>> b.__next__() 14 2 15 >>> b.__next__() 16 3 17 >>> b.__next__() 18 Traceback (most recent call last): 19 File "<stdin>", line 1, in <module> 20 StopIteration
博主小学未毕业,请勿口喷!

浙公网安备 33010602011771号