可迭代对象和迭代器
可迭代对象:可作用于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
博主小学未毕业,请勿口喷!