Python生成器表示式

2022-04-09 19:58:01 字數 1277 閱讀 3845

簡介:生成器表示式並不真正的建立數字列表,而是返回乙個生成器物件,此物件在每次計算出乙個條目後,把這個條目"產生"(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 >>> importos

2 >>> 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...