2017-10-18 3 views
-2

Ich verstehe, dass min mir das kleinste Element geben, wenn ich eine Liste oder eine Gruppe von NummernPython min-Funktion mit zwei iterable arugments

min([5, 10])] >>> 5 
min((5, 10)) >>> 5 

verwenden, aber wenn dies wurde in der Karte verwendet:

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

es gibt mir zurück:

1 
28 
9 

ist mir nicht map wohl helfen min L1 und L2 wiederum zu bewerben? und ich bin Art erwarten:

1 
2 
+1

Lesen Sie die Dokumentation für [ 'map'] (https://docs.python.org/ 3/library/functions.html # map). Du machst im Grunde 'map (min, zip (L1, L2))' –

+0

Schreibe Klammern um die * L1 * und * L2 * wie diese '' map (min, [L1, L2]) ''. –

Antwort

4

Wenn Sie die min von jedem von mehreren Listen wollen, müssen Sie eine Liste (oder iterable) der Listen Hand erstellen zur Karte:

for elt in map(min, (L1, L2)): 
    print(elt) 

Dies hat den Effekt, min(L1) und dann min(L2) aufzurufen.

map kann eine beliebige Anzahl von iterierbaren Argumenten annehmen; Es fügt alle entsprechenden Elemente der Iterationen zusammen und übergibt sie alle an die angegebene Funktion. So ist map(min, L1, L2) ähnlich zu (min(L1[0], L2[0]), min(L1[1], L2[1]), min(L1[2], L2[2])) (außer dass es ein iterables ist, kein Tupel).

+0

Grundsätzlich, wie @PatrickHaugh sagte, ist es so, als wäre sein Code 'map (min, zip (L1, L2))'. –

+0

hab es !! Vielen Dank! –

+0

@ChristianDean: In diesem Fall ist es; das ist jedoch nicht immer der Fall.Es funktioniert, weil "min" entweder das Minimum eines einzelnen Iterablen (wenn ein Argument angegeben wird) oder das Minimum aller seiner Argumente berechnet (wenn es mehr als ein Argument gibt). – rici

0

Wenn Sie Ihre Listen sind

L1 = [1, 28, 36] 
L2 = [2, 57, 9] 

dann

map(min, L1, L2) 

die min() Funktion den entsprechenden Elemente von L1, L2 gelten:

min(1, 2)  # result: 1 
min(28, 57)  # result: 28 
min(36, 9)  # result: 9 

(Aber es als for Schleife in Ihrem Fall - - wird es nur tun, wenn es eine Anfrage zur Auswertung ist (so ein lazy evaluation genannt), so wird es eine Liste[1, 28, 9], aber ein map Objekt nicht zurück.

Das map Objekt ist eine Art der Iterator - etwas als Rezept, wie es zu tun.

Warum? Da Listen sein können sehr sehr lange, aber das Rezept ist immer noch die gleiche -. Die kurzen one)

+0

vielen Dank, es war in der Tat wie zip (L1, L2) –

+0

Sie haben Recht - es ist * wie * die 'zip()' eingebaute Funktion, aber es führt nicht 'zip()' * als ein temporäres Ergebnis (ergebende Paare), aber es liefert direkt die * Rückgabewerte der abgebildeten Funktion *. – MarianD