1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3
4 '''#迭代器
5 迭代是Python最强大的功能之一,是访问集合元素的一种方式。。
6 迭代器是一个可以记住遍历的位置的对象。
7 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
8 迭代器有两个基本的方法:iter() 和 next()。
9 字符串,列表或元组对象都可用于创建迭代器
10 01.凡是可作用于for循环的对象都是Iterable类型
11 02.凡是可作用于next()函数的对象都是Iterrator类型,它们表示一个惰性计算的序列
12 03.集合数据类型如 list、dict、str等是Iterable 但不是Iterator,不过可以通过
13 iter()函数获得一个Iterator对象。
14 '''
15 from collections import Iterable, Iterator
16
17 def g(): #定义一个生成器
18 yield 1
19 yield 2
20 yield 3
21
22 #判断Iterable 和Iterator方法
23 print('Iterable? [1, 2, 3]:', isinstance([1, 2, 3], Iterable))
24 print('Iterable? \'abc\':', isinstance('abc', Iterable))
25 print('Iterable? 123:', isinstance(123, Iterable))
26 print('Iterable? g():', isinstance(g(), Iterable)) #Iterable? g(): True
27
28
29 print('Iterator? [1, 2, 3]:', isinstance([1, 2, 3], Iterator))
30 print('Iterator? iter([1, 2, 3]):', isinstance(iter([1, 2, 3]), Iterator))
31 print('Iterator? \'abc\':', isinstance('abc', Iterator))
32 print('Iterator? 123:', isinstance(123, Iterator))
33 print('Iterator? g():', isinstance(g(), Iterator)) #Iterator? g(): True
34
35 #生成器既是Iterable,也是Iterator
36
37 # iter list:
38 print('for x in [1, 2, 3, 4, 5]:')
39 for x in [1, 2, 3, 4, 5]:
40 print(x,end = " ") #1 2 3 4 5
41 print("")
42
43 #iterator list
44 print('for x in iter([1, 2, 3, 4, 5]):')
45 for x in iter([1, 2, 3, 4, 5]):
46 print(x,end = " ") ##1 2 3 4 5
47 print("")
48
49
50 print('next():')
51 it = iter([1, 2, 3, 4, 5])
52 print(next(it))
53 print(next(it))
54 print(next(it))
55 print(next(it))
56 print(next(it))
57
58
59 d = {'a': 1, 'b': 2, 'c': 3}
60
61
62 # iter each key:
63 print('iter key:', d)
64 for k in d.keys():
65 print('key:', k, end=" ") #key: a key: b key: c
66 print("")
67
68
69 # iter each value:
70 print('iter value:', d)
71 for v in d.values():
72 print('value:', v, end=" ") #value: 1 value: 2 value: 3
73 print("")
74
75
76 # iter both key and value:
77 print('iter item:', d)
78 for k, v in d.items():
79 print('item:', k, v, end=" ") #item: a 1 item: b 2 item: c 3
80 print("")
81
82
83 # iter list with index:
84 print('iter enumerate([\'A\', \'B\', \'C\']')
85 for i, value in enumerate(['A', 'B', 'C']):
86 print(i, value,end = " ") #0 A 1 B 2 C
87 print("")
88
89
90 # iter complex list:
91 print('iter [(1, 1), (2, 4), (3, 9)]:')
92 for x, y in [(1, 1), (2, 4), (3, 9)]:
93 print(x, y, end = " ") #1 1 2 4 3 9
94 print("")
95
96 list = [1,2,3,4]
97 it = iter(list) #创建迭代器对象
98 print(next(it)) #输出迭代器的下一个元素
99 print(next(it))
100
101 list = [1,2,3,4]
102 for x in iter(list):
103 print(x, end = " ") #使用for循环语句进行遍历
104 print("")
105
106 #使用next()函数
107 import sys
108 list=[1,2,3,4]
109 it = iter(list)
110
111 while True:
112 try:
113 print(next(it),end=" ")
114 except StopIteration:
115 sys.exit()
116 print("")