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) 收藏 举报