#func = lambda : x (lambda相當於函式名)
v = [lambda :x for x in range(10)]
#[func0, func1, func2, ..., func9]
#只要這樣寫,在記憶體中已經定格在9值
#雖然lambda函式還沒執行,但是range已經執行完了,x在記憶體裡已經是9了
(v)print
(v[0])
(v[0]())
'''[.at 0x000001915cbd51e0>, .at 0x000001915cbd5840>, .at 0x000001915cbd57b8>, .at 0x000001915cbd58c8>, .at 0x000001915cbd5950>, .at 0x000001915cbd59d8>, .at 0x000001915cbd5a60>, .at 0x000001915cbd5ae8>, .at 0x000001915cbd5b70>, .at 0x000001915cbd5bf8>]
.at 0x000001915cbd51e0>
9'''
#對於自定義函式內的迴圈,range只執行了一次,所以值也在0
deffunc():
for i in range(10):
return
iprint
(func)
(func())
'''0
'''
v = (lambda : x for x in range(10))print(v) #
生成器位址
#生成器不能按索引取值
#print(v[0]) #typeerror: 'generator' object is not subscriptable
#print(v[0]())
print(next(v)) #
第乙個函式的記憶體位址
print(next(v)()) #
1 ,next一下執行一下
'''at 0x00000249f6c61e60>
.at 0x00000249f67a2ea0>
1'''
對生成器表示式及列表表示式使用zip的注意事項
在python資料處理中,zip和列表表示式 list comprehensions 都是常用的操作。但當兩者結合在一起時,若對zip函式不熟悉則容易出錯 array list np.arange 10 np.arange 10 zip comp zip a for a in array list ...
生成器表示式
生成器 生成器本質是迭代器,允許自定義邏輯的迭代器 迭代器和生成器區別 迭代器本身是系統內建的.重寫不了.而生成器是使用者自定義的,可以重寫迭代邏輯 生成器可以用兩種方式建立 1 生成器表示式 裡面是推導式,外面用圓括號 2 生成器函式 用def定義,裡面含有yield 1 生成器表示式 gener...
生成器 表示式
1.什麼是生成器?生成的工具。生成器是乙個 自定義 的迭代器,本質上是乙個迭代器。2.如何實現生成器但凡在函式內部定義了的yield,呼叫函式時,函式體 不會執行,會返回乙個結果,該結果就是乙個生成器。yield 每一次yield都會往生成器物件中新增乙個值。yield只能在函式內部定義 yield...