據我所知,分給我最小的項目,如果我用一個列表或一組號碼蟒蛇分函數有兩個迭代arugments
min([5, 10])] >>> 5
min((5, 10)) >>> 5
但是當這是在地圖中使用:
L1 = [1, 28, 36]
L2 = [2, 57, 9]
for elt in map(min, L1, L2):
print(elt)
它給我回:
1
28
9
沒有地圖想幫我又適用分鐘到L1和L2?和我種的期待:
1
2
據我所知,分給我最小的項目,如果我用一個列表或一組號碼蟒蛇分函數有兩個迭代arugments
min([5, 10])] >>> 5
min((5, 10)) >>> 5
但是當這是在地圖中使用:
L1 = [1, 28, 36]
L2 = [2, 57, 9]
for elt in map(min, L1, L2):
print(elt)
它給我回:
1
28
9
沒有地圖想幫我又適用分鐘到L1和L2?和我種的期待:
1
2
如果希望每個幾個名單的min
,你需要創建一個列表,以手的名單(或迭代)來映射:
for elt in map(min, (L1, L2)):
print(elt)
這具有調用min(L1)
然後min(L2)
的效果。
map
可以接受任意數量的可迭代參數;它組裝所有迭代的相應元素,並將它們全部傳遞給提供的函數。所以map(min, L1, L2)
與(min(L1[0], L2[0]), min(L1[1], L2[1]), min(L1[2], L2[2]))
類似(除了它是可迭代的,不是元組)。
基本上,正如@PatrickHaugh所說,就好像他的代碼是'map(min,zip(L1,L2))'。 –
明白了!謝謝! –
@ChristianDean:在這種情況下,它是;但情況並非如此。它的工作原理是因爲'min'恰好要麼計算單個迭代(如果給定一個參數)的最小值或者它的所有參數的最小值(如果給定多個參數)。 – rici
如果你的名單
L1 = [1, 28, 36]
L2 = [2, 57, 9]
然後
map(min, L1, L2)
將應用min()
功能的L1
的相應的元素,L2
:
min(1, 2) # result: 1
min(28, 57) # result: 28
min(36, 9) # result: 9
(但將做到這一點只有在有評價它請求(所謂一懶評價) - 爲你的情況for
循環 - 這樣就不會返回列表[1, 28, 9]
,但map
對象。
的map
對象是排序迭代的 - 這是作爲一個配方怎麼辦呢。
爲什麼?由於列表可能非常非常長,但配方仍然是相同的 - 在短之一)
非常感謝,它的確如同拉鍊(L1,L2) –
你是對的 - 它是* like * zip()'內置函數,但它不會執行'zip()'* as一個臨時結果(產生對),但它直接產生映射函數*的返回值。 – MarianD
閱讀['map'](文檔https://docs.python.org/ 3 /庫/ functions.html#地圖)。你基本上正在做'map(min,zip(L1,L2))' –
像這樣的'map(min,[L1,L2])'在* L1 *和* L2 *周圍加括號。 –