Problem beim Verständnis von Python-Listen

7

Was bedeutet die letzte Zeile im folgenden Code?

%Vor%

Mein Versuch, das Problem zu lösen:

  • "". join ... verwendet join -method um Text zu leeren
  • e [1] * e [0] multipliziert zwei aufeinanderfolgende Werte in der Sequenz e
  • Ich bin mir nicht sicher, was ist e
  • Ich bin mir nicht sicher, was es bedeutet, wenn du etwas vorher für -loop hast, wie: e[1] * e[0] for e in elt
Léo Léopold Hertz 준영 01.02.2009, 18:22
quelle

6 Antworten

19

Vielleicht am besten mit einem Beispiel erklärt:

%Vor%

ist die Kurzform von

%Vor%

List comprehensions sind einfach syntaktischer Zucker für for loops, die aus einer Folge von Anweisungen einen Ausdruck bilden.

elt kann ein beliebiges Objekt sein, da Sie es aus Pickles laden, und e ebenfalls. Die Verwendung deutet darauf hin, dass es sich um eine Sequenz handelt Typ, aber es könnte einfach alles sein, was das Sequenzprotokoll implementiert.

    
Torsten Marek 01.02.2009, 18:34
quelle
7

Zuerst müssen Sie http: // vor die URL setzen, dh: handle = urllib.urlopen (" Ссылка ")

Ein Ausdruck [e für e in einer Liste] ist ein Listenverständnis , das eine Liste von Werten erzeugt.

>

Bei Python-Strings wird der Operator * zum Wiederholen einer Zeichenfolge verwendet. Geben Sie die Befehle nacheinander in einen Interpreter ein und sehen Sie sich die Daten an:

%Vor%

Dies zeigt uns, dass jede Datenzeile ein Tupel ist, das zwei Elemente enthält.

Somit ist der Ausdruck e 1 * e [0] tatsächlich die Zeichenfolge in e [0] wiederholt e 1 Mal.

Daher zeichnet das Programm ein Banner.

    
Andy Dent 01.02.2009 18:34
quelle
4

[e[1] * e[0] for e in elt] ist ein Listenverständnis, das durch das Durchlaufen einer anderen Liste zu einer Liste selbst ausgewertet wird, in diesem Fall elt . Jedes Element in der neuen Liste ist e[1]*e[0] , wobei e das entsprechende Element in elt ist.

    
Nikhil Chelliah 01.02.2009 18:28
quelle
2

Die Frage selbst wurde bereits vollständig beantwortet, aber ich möchte hinzufügen, dass ein Listenverständnis auch das Filtern unterstützt. Ihre ursprüngliche Zeile

%Vor%

könnte zum Beispiel

werden %Vor%

nur für Elemente in elt, die zwei Elemente haben.

    
markhellewell 03.02.2009 21:06
quelle
1

join () ist eine String-Methode, die für ein Trennzeichen in der neuen Zeichenfolge

verwendet wird %Vor%

und Listenverständnis ist dort nicht nötig, Generator würde genügen

    
SilentGhost 01.02.2009 18:33
quelle
1

Andy's ist eine großartige Antwort!

Wenn Sie jeden Schritt der Schleife (mit Zeilenumbrüchen) sehen möchten, probieren Sie dies aus:

%Vor%     
bernie 01.02.2009 19:15
quelle

Tags und Links