2016-08-02 189 views
3

我無法弄清楚爲什麼這個map函數正在產生它產生的輸出。的代碼如下:具有min參數和兩個列表的Python映射函數

L1 = [1, 28, 36] 
    L2 = [2, 57, 9] 
    print map(min, L1, L2) 

輸出爲: [1,28個,9]

我明白它採取了最小值從第一清單中,但是爲什麼它不會從取2第二,取而代之。9.感謝任何反饋,謝謝。

+1

你的意思是說''[1,2]'作爲結果嗎?如果不是,你需要什麼? –

回答

5

結果從

[min(L1[0], L2[0]), min(L1[1], L2[1]), min(L1[2], L2[2])] 

所以min由被稱爲上每對值來構建新的列表

2

map(min, L1, L2)裝置大致此:

[min(L1[0], L2[0]), min(L1[1], L2[1]), min(L1[2], L2[2])] 

所以min [1,2](每個列表的第一個元素)爲1,[28,57]的min爲28,[36,9]的min爲9.

您可能需要map(min, [L1, L2])

1

聲明:

map(min, L1, L2) 

兩個列表中的每個元素進行比較以相同索引

因此,
它執行:

list = [] 
list.append(min(1,2)) #1 
list.append(min(28,57)) #28 
list.append(min(36,9)) #9 
print list 

導致輸出[1, 28, 9]

1

讓我們來看看the document

map(function, iterable, ...)

返回該APPLI一個迭代es函數爲可迭代的每個項目,產生結果 。如果傳遞其他迭代參數,則 函數必須採用多個參數,並將所有迭代項以並行的形式應用於項目 。 ...

這裏,並聯指從不同iterable相同索引的項被傳遞到function每個索引。

相關問題