迭代器:将可迭代对象生成一个迭代器
1 s = "1234" 2 s1 = "5678" 3 s2 = s.__iter__() #生成s的迭代器,返回的是迭代器地址 4 s3 = s1.__iter__() #生成s1的迭代器,返回的是迭代器地址 5 print(s2) 6 print(s3)
结果对照:
<str_iterator object at 0x0000025E5E18F390> <str_iterator object at 0x0000025E5E18F2B0>
从迭代器中取值:
1 s = [[4,5,6,[7,8,9]],[]] 2 s1 = "5678" 3 s2 = s.__iter__() #生成s的迭代器,返回的是迭代器地址 4 s3 = s1.__iter__() #生成s1的迭代器,返回的是迭代器地址 5 print(s2) 6 print(s3) 7 s4 = s2.__iter__() #再次生成s2的迭代器,返回的是迭代器地址,无实际意义,与第一次生成迭代器同一个地址 8 s5 = s3.__iter__() #再次生成s3的迭代器,返回的是迭代器地址 9 print(s4) 10 print(s5) 11 print(s2.__next__()) #取迭代器中第一个元素[4,5,6,[7,8,9]] 12 print(s3.__next__()) #去迭代器中第一个字符串"5" 13 print(s4.__next__()) 14 print(s5.__next__())
结果对照:
1 <list_iterator object at 0x00000274ABED89B0> 2 <str_iterator object at 0x00000274ABED8160> 3 <list_iterator object at 0x00000274ABED89B0> 4 <str_iterator object at 0x00000274ABED8160> 5 [4, 5, 6, [7, 8, 9]] 6 5 7 [] 8 6
查看是否是一个可迭代对象和是否是一个迭代器:
1 from collections.abc import Iterable,Iterator 2 3 s = [[4,5,6,[7,8,9]],[]] 4 s1 = "5678" 5 print(isinstance(s,Iterator)) #查看是否是一个迭代器 6 print(isinstance(s1,Iterable)) #查看是否是一个可迭代对象
结果对照:
1 False 2 True