簡介:生成器表示式並不真正的建立數字列表,而是返回乙個生成器物件,此物件在每次計算出乙個條目後,把這個條目"產生"(yield)出來。生成器表示式使用了"惰性計算"或稱作"延時求值"的機制。
序列過長,並且每次只需要獲取乙個元素時,應該考慮生成器表示式而不是列表解析。
語法:(expression for iter_val in iterable)
(expression for iter_val in iterable if cond_expr)
例項展示:
1 >>> n = (i**2 for i in range(1,11))2 >>> printn
3 at 0x7fe4fd0e1c30> #此處返回的是乙個生成器的位址
4 >>>n.next()
5 16 >>>n.next()
7 48 >>>n.next()
9 910 >>>n.next()
11 16
12 >>>n.next()
13 25
14 >>>n.next()
15 36
16 >>>n.next()
17 49
18 >>>n.next()
19 64
20 >>>n.next()
21 81
22 >>>n.next()
23 100
24 >>> n.next() #所有元素遍歷完後,丟擲異常
25 traceback (most recent call last):
26 file "", line 1, in 27 stopiteration
1 >>> importos2 >>> f = (file for file in os.listdir('/var/log') if file.endswith('.log'))
3 >>> printf
4 at 0x7fe4fd0e1c80>
5 >>>f.next()
6 'anaconda.ifcfg.log'
7 >>>f.next()
8 'xorg.0.log'
9 >>>f.next()
10 'anaconda.storage.log'
11 >>>f.next()
12 'xorg.9.log'
13 >>>f.next()
14 'yum.log'
生成器表示式
生成器 生成器本質是迭代器,允許自定義邏輯的迭代器 迭代器和生成器區別 迭代器本身是系統內建的.重寫不了.而生成器是使用者自定義的,可以重寫迭代邏輯 生成器可以用兩種方式建立 1 生成器表示式 裡面是推導式,外面用圓括號 2 生成器函式 用def定義,裡面含有yield 1 生成器表示式 gener...
生成器 表示式
1.什麼是生成器?生成的工具。生成器是乙個 自定義 的迭代器,本質上是乙個迭代器。2.如何實現生成器但凡在函式內部定義了的yield,呼叫函式時,函式體 不會執行,會返回乙個結果,該結果就是乙個生成器。yield 每一次yield都會往生成器物件中新增乙個值。yield只能在函式內部定義 yield...
生成器表示式
把列表推導式的換成 就是生成器表示式 示例 把生一筐雞蛋變成給你乙隻老母雞,這也是生成器的特性 chicken 雞蛋 s item for item in range 10 print chicken 生成器物件記憶體位址 print next chicken 雞蛋0 print next chic...