列表生成式,生成器,迭代器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
In [10]: a = [1,2,3,4,5]
In [12]: [i+1 for i in a]
Out[12]: [2, 3, 4, 5, 6]
In [18]: a = (i+1 for i in a)

In [19]: next(a)
Out[19]: 2

In [20]: next(a)
Out[20]: 3

In [21]: next(a)
Out[21]: 4

In [22]: next(a)
Out[22]: 5

In [23]: next(a)
Out[23]: 6

In [24]: next(a)
---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
<ipython-input-24-15841f3f11d4> in <module>
----> 1 next(a)


斐波那契数
In [32]: def fib(n):
...: count = 0
...: a = 0
...: b = 1
...: while count < n:
...: tmp = a
...: a = b
...: b = tmp + b
...: yield b
...: count += 1
In [35]: a = fib(20)

In [36]: next(a)
Out[36]: 1

In [37]: next(a)
Out[37]: 2

In [38]: next(a)
Out[38]: 3

In [39]: next(a)
Out[39]: 5

In [40]: next(a)
Out[40]: 8