7.5-7.6 列表生成式和生成器以及區別
阿新 • • 發佈:2017-11-10
生成式 生成器
一、列表生成式是 python 受歡迎的語法之一
通過一句簡潔的語法就可以對一組元素進行過濾
還可以對得到的元素進行轉換處理。
li = [x + x for x in range(1, 101) if x % 2 == 0] print(li) def funa(x): a=[] for x in range(1, 101): if x % 2 == 0: a.append(x+x) return a print(funa(1))
二、列表生成器
1、最簡單的辦法,把原來的生成式的 [] 換成 () 就 ok 了
lt=(x*x for x in range(1,11) if x%2==0) print(list(lt)) print(type(lt)) for i in lt: print(i)
2、函數中定義列表生成器
def fib(n): sum=0 i=0 while(i<n): sum=sum+i i+=1 yield (sum) print(type(fib(10))) for x in fib(10): print(x) print(type(fib(10)))
生成器和生成式的區別:
1、列表生成式,一次性生成所有的數據,然後保存在內存中,適合小量的數據
2、生成器,返回一個可以叠代的對象,及 ‘generator‘ 對象,必須通過循環才可以一一取出所以的結果
3、可叠代對象,可以通過循環調用出來的,就是可叠代的對象 [] () {} 生成式 生成器
4、叠代器 生成器,必須通過 next() 調用的,被 next() 函數調用並不斷返回下一個值得對象稱為叠代器
7.5-7.6 列表生成式和生成器以及區別