Was bedeutet die letzte Zeile im folgenden Code?
%Vor%Mein Versuch, das Problem zu lösen:
e[1] * e[0] for e in elt
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.
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.
[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.
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.
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
Tags und Links python list-comprehension