生成器表示式

2022-06-30 11:21:08 字數 944 閱讀 5775

# ### 生成器

'''#生成器本質是迭代器,允許自定義邏輯的迭代器

#迭代器和生成器區別:

迭代器本身是系統內建的.重寫不了.而生成器是使用者自定義的,可以重寫迭代邏輯

#生成器可以用兩種方式建立:

(1)生成器表示式 (裡面是推導式,外面用圓括號)

(2)生成器函式 (用def定義,裡面含有yield)

'''# (1) 生成器表示式 generator

# [1,2,3,4] => [4,8,12,16]

# i << 2 i乘以2的2次冪

gen = (i << 2 for i in range(1,5))

print(gen)

from collections import iterator,iterable

print(isinstance(gen,iterator))

# (1)使用next進行呼叫生成器

res = next(gen)

print(res)

res = next(gen)

print(res)

res = next(gen)

print(res)

res = next(gen)

print(res)

# res = next(gen) 小心越界

# print(res)

# (2) 使用for迴圈呼叫生成器

gen = (i << 2 for i in range(1,5))

for i in gen:

print(i)

# (3) 用for 和next 搭配呼叫生成器

gen = (i << 2 for i in range(1,5))

for i in range(2):

res = next(gen)

print(res)

生成器 表示式

1.什麼是生成器?生成的工具。生成器是乙個 自定義 的迭代器,本質上是乙個迭代器。2.如何實現生成器但凡在函式內部定義了的yield,呼叫函式時,函式體 不會執行,會返回乙個結果,該結果就是乙個生成器。yield 每一次yield都會往生成器物件中新增乙個值。yield只能在函式內部定義 yield...

生成器表示式

把列表推導式的換成 就是生成器表示式 示例 把生一筐雞蛋變成給你乙隻老母雞,這也是生成器的特性 chicken 雞蛋 s item for item in range 10 print chicken 生成器物件記憶體位址 print next chicken 雞蛋0 print next chic...

生成器表示式

普通的求和函式 def add n,i return n i 生成器物件 返回 0 1 2 3 def test for i in range 4 yield i 將test函式變成生成器物件 g test 簡單的for迴圈 for n in 1,10 g add n,i for i in g 第一...