2016-08-02 5 views
3

Ich habe Probleme herauszufinden, warum diese Map-Funktion produziert die Ausgabe, die es produziert. Der Code ist wie folgt:Python-Map-Funktion mit min-Argument und zwei Listen

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

Ausgabe lautet: [1, 28, 9]

Ich verstehe es die Min-Werte aus der ersten Liste nahm, aber warum hat er nicht die 2 von dem nehmen Zweitens, und nahm stattdessen die 9. Ich schätze jedes Feedback, danke.

+1

Wollten Sie '[1, 2]' als Ergebnis erhalten? Wenn nicht, was benötigen Sie? –

Antwort

5

Das Ergebnis nach oben ist aus

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

so min wird an jedem Wertepaar die neue Liste

2

map(min, L1, L2) zu konstruieren bedeutet in etwa so genannt zu werden:

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

So ist die min von [1,2] (erstes Element jeder Liste) ist 1, min von [28,57] ist 28 und min von [36,9] ist 9.

Sie wollten wahrscheinlich map(min, [L1, L2]) stattdessen.

1

Die Aussage:

map(min, L1, L2) 

vergleicht jeweils Elemente der beiden Listen mit dem gleichen Index .

So
Es führt:

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

mit dem Ausgang führenden [1, 28, 9]

1

Lassen Sie uns bei the document einen Blick:

map(function, iterable, ...)

Return ein Iterator, Appli Es funktioniert auf jedes iterierbare Element, , was zu den Ergebnissen führt. Wenn zusätzliche iterierbare Argumente übergeben werden, muss die Funktion so viele Argumente annehmen und wird auf die Elemente aus allen iterbaren Elementen parallel angewendet. ...

Hier parallel bedeutet Elemente von demselben Index aus verschiedenen iterable-function für jeden Index übergeben werden.