迭代器相关整理

迭代器:将可迭代对象生成一个迭代器

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
原文地址:https://www.cnblogs.com/NoteBook3013/p/10249770.html