1. 程式人生 > >生成式與生成器

生成式與生成器

for generator bsp xrange 簡單 循環調用 生成 ner 調用

1、生成式

 1 #列表生成式
 2 #一次性生成所有數據,然後保存在內存中,適合小量數據
 3 a=[x*x for x in xrange(1,101) if x%2==0]
 4 #  執行的操作      for 循環         if條件
 5 print(a)
 6 #列表生成式
 7 #一次性生成所有數據,然後保存在內存中,適合小量數據
 8 a=[x*x for x in xrange(1,101) if x%2==0]
 9 #  執行的操作      for 循環         if條件
10 print(a)

2、生成器

 1 #列表生成器
 2 #返回一個可叠代對象,及‘generator’對象,,必須通過循環才可以一一取出所有結果
3 #可叠代對象:可通過循環調用出來的就是可叠代對象,[],(),{},,生成式,生成器 4 #叠代器,可簡單理解為生成器,通過next()函數調用調用並不斷返回下一個值的對象稱為叠代器 5 6 #1、最簡單的方法:把原來生成時的[]換成() 7 a=(x*x for x in xrange(1,101) if x%2==0) 8 print(a) 9 print(type(a)) 10 print(a.next()) 11 print(a.next()) 12 print(a.next()) 13 print(a.next()) 14 #2、函數定義列表生成器 15 #當一個函數中有關鍵字yield,,,所生成的是一個生成器
16 #生成器不會一次列出所有數據,只有當你使用時會列出來,提升內存的使用率 17 def a(n): 18 sum=0 19 i=0 20 while(i<n): 21 sum+=i 22 i+=1 23 yield (sum) 24 print(type(a(10))) 25 for x in a(10): 26 print(x) 27 #列表生成器 28 #返回一個可叠代對象,及‘generator’對象,,必須通過循環才可以一一取出所有結果 29 #可叠代對象:可通過循環調用出來的就是可叠代對象,[],(),{},,生成式,生成器
30 #叠代器,可簡單理解為生成器,通過next()函數調用調用並不斷返回下一個值的對象稱為叠代器 31 32 #1、最簡單的方法:把原來生成時的[]換成() 33 a=(x*x for x in xrange(1,101) if x%2==0) 34 print(a) 35 print(type(a)) 36 print(a.next()) 37 print(a.next()) 38 print(a.next()) 39 print(a.next()) 40 #2、函數定義列表生成器 41 #當一個函數中有關鍵字yield,,,所生成的是一個生成器 42 #生成器不會一次列出所有數據,只有當你使用時會列出來,提升內存的使用率 43 def a(n): 44 sum=0 45 i=0 46 while(i<n): 47 sum+=i 48 i+=1 49 yield (sum) 50 print(type(a(10))) 51 for x in a(10): 52 print(x)

3、練習

1 #99乘法表
2     for i in range(1,10):
3         for j in range(1,i+1):
4             print({0}*{1}={2}\t.format(j,i,i*j)),
5         print(\n)#99乘法表
6     for i in range(1,10):
7         for j in range(1,i+1):
8             print({0}*{1}={2}\t.format(j,i,i*j)),
9         print(\n)

  

生成式與生成器