3 回答

TA貢獻1799條經驗 獲得超9個贊
一個非常有趣的問題,它有一個有趣的答案。
該map函數返回一個可迭代的Map對象。map正在懶惰地執行其計算,因此除非您迭代該對象,否則不會調用該函數。
因此,如果您這樣做:
x = map(D.attach_item, items)
for i in x:
continue
預期的結果將顯示出來。

TA貢獻1851條經驗 獲得超3個贊
map只創建一個迭代器。您應該遍歷它以將項目添加到中D.attached。像這樣:
D = Dummy()
items = [1, 2, 3, 4]
list(map(D.attach_item, items))
是的,不要在您的代碼中這樣做:)但是該示例僅對理解有用。

TA貢獻1836條經驗 獲得超3個贊
引用文檔
返回一個迭代器,該迭代器將函數應用于所有可迭代項,并產生結果。
這意味著您必須收集迭代器,例如
list(map(D.attach_item, items))
> [None, None, None, None]
嗯,很奇怪。為什么沒有,沒有,...
是的,您可以在map語句中轉換任何循環,但這并不總是有用的。Map接受一個參數并對其執行某些操作(在大多數情況下),然后返回該參數,而沒有副作用!這是一個例子:
def add(a):
return a + 3
list(map(add, items))
> [4, 5, 6, 7]
當您將其與其他功能(例如, filter
def add(a):
return a + 3
def odd(a):
return a % 2 == 1
list(map(add, filter(odd, items)))
> [4, 6]
添加回答
舉報