生成式與生成器
阿新 • • 發佈:2017-11-06
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‘)
生成式與生成器