49.生成器(generation)

generation.py

def myGen():
    print('生成器被执行!')
    yield 1
    yield 2
    

 generation_fibs.py

def fibs():
    a = 0
    b = 1
    while True:
        a, b = b, a + b
        yield a

  generation_fibs_test.py

===== RESTART: C:\Python36\yanghao_python_work\49.生成器\generation_fibs.py =====
>>> for i in fibs():
	if i > 100:
		break
	print(i)

	
1
1
2
3
5
8
13
21
34
55
89
>>> 

  列表推导式:

1 >>> a = [i for i in range(100) if not (i % 2) and i % 3]
2 >>> a
3 [2, 4, 8, 10, 14, 16, 20, 22, 26, 28, 32, 34, 38, 40, 44, 46, 50, 52, 56, 58, 62, 64, 68, 70, 74, 76, 80, 82, 86, 88, 92, 94, 98]

字典推导式:

>>> b = {i:i % 2 == 0 for i in range(10)}
>>> b
{0: True, 1: False, 2: True, 3: False, 4: True, 5: False, 6: True, 7: False, 8: True, 9: False}

集合推导式:

>>> c = {i for i in [1, 1, 2, 2, 3, 3, 4, 5, 5, 5, 6, 6, 7, 8]}
>>> c
{1, 2, 3, 4, 5, 6, 7, 8}

字符串推导式:(没有哦

>>> d ="i for i in 'I love FishC.com!'"
>>> d
"i for i in 'I love FishC.com!'"

生成器推导式:

>>> e = (i for i in range(10))
>>> e
<generator object <genexpr> at 0x00000000030D3258>
>>> next(e)
0
>>> next(e)
1
>>> next(e)
2
>>> for i in e:
    print(i)

    
3
4
5
6
7
8
9
>>> 

 生成器推导式如果作为函数的参数,可以直接写推导式,而不用加小括号

>>> sum(i for i in range(100) if i % 2)
2500

 

posted on 2018-06-27 15:39  bestyanghao  阅读(88)  评论(0)    收藏  举报

导航