Verwenden Sie Listenverständnis in Python, um etwas Ähnliches wie zip () zu tun?

7

Ich bin ein Python-Neuling und eines der Dinge, die ich versuche zu tun, ist, meinen Kopf um das Listenverständnis zu wickeln. Ich kann sehen, dass es ein ziemlich mächtiges Feature ist, das es wert ist, gelernt zu werden.

%Vor%

Wie verwende ich Listenverstehen, damit ich die Ergebnisse als eine Reihe von Listen innerhalb einer Liste statt als eine Reihe von Tupeln innerhalb einer Liste erhalten kann?

%Vor%

(Ich weiß, dass Wörterbücher in dieser Situation wahrscheinlich besser geeignet wären, aber ich versuche nur, Listen etwas besser zu verstehen). Danke!

    
jamieb 30.01.2010, 22:03
quelle

5 Antworten

26

In etwa so:

%Vor%

Alternativ kann der list -Konstruktor Tupel in Listen umwandeln:

%Vor%

Oder die Funktion map ist in diesem Fall etwas weniger ausführlich:

%Vor%     
Greg Hewgill 30.01.2010, 22:05
quelle
5

Wenn Sie es ohne die Verwendung von zip machen wollten, müssten Sie so etwas tun:

%Vor%

Aber es gibt keinen Grund, das zu tun, außer einer intellektuellen Übung.

Die Verwendung von map(list, zip(cities, airports)) ist kürzer, einfacher und wird mit hoher Wahrscheinlichkeit schneller ausgeführt.

    
Dave Kirby 30.01.2010 23:33
quelle
4

Ein Listenverständnis, ohne Hilfe von zip , map oder itertools , kann keine "parallele Schleife" auf mehrere Sequenzen anwenden - nur einfache Schleifen in einer Sequenz oder "verschachtelte" Schleifen in mehreren Einsen.

    
Alex Martelli 30.01.2010 22:10
quelle
1

Dies nimmt die Ausgabe von zip und konvertiert alle Tupel in Listen:

%Vor%

Wie für die Leistung von jedem:

%Vor%     
Wim 30.01.2010 22:08
quelle
0

Möglich auch enumerate zu verwenden:

%Vor%     
ohmydog 23.03.2017 18:41
quelle

Tags und Links