wie Tupel aus Listen mit List Verständnis in Python erhalten

8

Ich habe zwei Listen und möchte sie in eine Liste von tuples zusammenführen. Ich möchte es mit list comprehension machen, ich kann es mit map arbeiten. aber wäre schön zu wissen, wie das Listenverständnis hier funktioniert. Code hier

%Vor%

Ich habe Kommentare geschrieben, wo es funktioniert und wo nicht. Wie kann ein for-loop in list comprehension

gekoppelt werden?     
eagertoLearn 24.09.2013, 19:13
quelle

2 Antworten

13

Überlegen Sie Listenkompressen als Schleifen. Wie können Sie 2 nicht verschachtelte Schleifen schreiben?

Sie können dies mit etwas seltsamen Listenverständnis tun:

%Vor%

oder

%Vor%

Aber eigentlich ist es besser, zip zu verwenden.

    
Roman Pekar 24.09.2013, 19:17
quelle
5

Der Listen-Verständnis-Weg ist dumm, weil er nur ein Do-Nothing-Listenverständnis um zip umschließt:

%Vor%

Benutze einfach zip , dafür ist es da. Es macht keinen Sinn, sich zu zwingen Listenannahmen zu verwenden, wenn sie nichts erreichen.

Edit: Wenn Ihre Frage lautet "Wie bekomme ich zwei For-Schleifen in einem Listenverständnis", sollten Sie das stattdessen fragen. Die Antwort lautet: "Sie können nicht zwei PARALLEL for Schleifen in einem Listenverständnis erhalten". Jedes Mal, wenn Sie zwei for -Klauseln in ein Listenverständnis einfügen, werden sie verschachtelt. Das, ein Listenverständnis wie folgt:

%Vor%

Funktioniert wie zwei verschachtelte for -Schleifen:

%Vor%

Sie können kein Listenverständnis schreiben, das dies tut:

%Vor%

. . . und das musst du nicht, weil du stattdessen die Funktion zip dafür hast.

(Sie können es fälschen, indem Sie eine Lösung wie @Roman Pekar verwenden, aber das macht nicht wirklich zwei for -Schleifen; es tut nur eins und benutzt die Werte, um in die andere Liste zu gelangen.)

    
BrenBarn 24.09.2013 19:14
quelle