So verwenden Sie das Listenverständnis in Python
Die rechtzeitige Verwendung des Listenverständnisses in Python kann Ihnen iterative Listenoperationen erleichtern. Es ist nicht nur eine einzelne Zeile, sondern auch besser lesbar und wird effizienter ausgeführt.
Sie könnten sich jedoch aufregen, wenn Sie nicht wissen, wie man es benutzt. Es kann sogar frustrierender sein, wenn Sie nicht wissen, wo Sie es in Ihrem Code anwenden sollen. Hier zeigen wir Ihnen anhand einiger Beispiele aus der Praxis, wie Sie das Listenverständnis in Python verwenden.
Was ist Listenverständnis in Python und wie funktioniert es?
Das Erstellen einer Liste von Elementen mit Python ist einfach. Die Aufgabe kann jedoch etwas langwierig werden, wenn Sie eine Liste von Werten oder Elementen aus mathematischen Operationen oder Zeichenfolgenoperationen erstellen müssen. Dann kann es nützlich sein, das Listenverständnis zu verwenden.
Ein Vorteil der Verwendung des Listenverständnisses besteht darin, dass Sie mehrere Vorgänge in einer einzigen Liste ausführen können.
Im Gegensatz dazu werden neue Elemente erstellt und an eine leere Liste angehängt, die automatisch deklariert wird. Anstatt eine leere Liste manuell zu erstellen und mit einer for- Schleife an sie anzuhängen, können Sie dies mit Pythons Listenverständnis automatisch tun, ohne sich Gedanken darüber zu machen, wie die neue Liste durchkommt.
Der Begriff "Listenverständnis" kommt von der Tatsache, dass sich alle Operationen in einer Python-Liste befinden, die einer benannten Variablen zugewiesen ist. Wie bereits erwähnt, können Sie damit bestimmte Vorgänge in einer einzigen Codezeile ausführen. Anschließend wird die Ausgabe an eine neue Liste angehängt.
Letztendlich können Sie die Ausgabe eines Listenverständnisses auch für andere Zwecke verwenden. Das liegt daran, dass Ausdrücke in separaten Variablen gestapelt werden. So können Sie später darauf verweisen.
Beispielsweise könnten Sie eine Website mit BeautifulSoup kratzen . Angenommen, Sie möchten den Namen aller Artikel und deren Preise von der Website abrufen.
Anschließend entscheiden Sie, die gescrapten Daten in eine CSV- oder eine Excel-Datei einzufügen. Die ideale Vorgehensweise besteht darin, den Namen aller Artikel und ihre Preise zu kratzen und beide in separate Spalten zu setzen. In diesem Fall stellt die Verwendung eines Listenverständnisses jedoch sicher, dass die Daten in dedizierten Variablen gespeichert sind. Sie können solche Variablen später in einen Python DataFrame konvertieren.
Schauen Sie sich das folgende Beispiel an:
Products = [i.text for i in bs.find_all('name tags')]
Price = [i.text for i in bs.find_all('price tags')]
Sobald Sie die Schleifenvariablen erhalten haben, können Sie sie mit Pythons Pandas in separate Spalten in einem DataFrame einfügen.
Erstellen und Verwenden eines Listenverständnisses in Python
Die for- Schleife ist ein wesentlicher Iterator für ein Listenverständnis. Im Allgemeinen hat ein Listenverständnis in Python folgendes Format:
ComprehensionVariable = [expression for items in list]
Druck ComprehensionVariable gibt das Ergebnis des obigen Codes als Liste.
Achten Sie jedoch darauf, ein Listenverständnis nicht mit einer offenen for- Schleife zu verwechseln.
Verwenden wir beispielsweise eine offene for-Schleife , um eine Liste aller Vielfachen von drei zwischen 1 und 30 zu erhalten:
myList = []
for i in range(1, 11):
myList.append(i * 3)
print(myList)
Output: [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
Um die beiden zu vergleichen, machen wir dasselbe mit einem Listenverständnis:
multiplesOf3 = [i*3 for i in range(1, 11)]
print(multiplesOf3)
Output = [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
Sie können auch ein Listenverständnis mit bedingten Anweisungen verwenden. Der folgende Beispielcode gibt alle ungeraden Zahlen zwischen 1 und 10 aus:
oddNumbers = [i for i in range(1, 11) if not i%2==2]
print(oddNumbers)
Output = [1, 3, 5, 7, 9]
Schreiben wir nun auch den obigen Code mit einer offenen for- Schleife neu:
myList = []
for i in range(1, 11):
if not i%2 == 0:
myList.append(i)
print(myList)
Output: [1, 3, 5, 7, 9]
Ein Listenverständnis akzeptiert auch verschachtelte if-Anweisungen:
oddNumbers = [i for i in range(1, 11) if not i%2==0 if i<4]
print(oddNumbers)
Output: [1, 3]
Es wird auch eine verschachtelte for- Schleife benötigt:
someNums = [[i*2 for i in range(1, 3)] for _ in range(4)]
print(someNums)
Sie können auch eine einfache verschachtelte for- Schleife in einem Listenverständnis haben:
someNums = [i*2 for i in range(1, 3) for k in range(4)]
Sie können Zeichenfolgen auch mit Python-Listenverständnis bearbeiten. Schauen wir uns unten ein Wortzählerverständnis an:
word = ["This is a python list comprehension tutorial"]
wordCounter = [i.count(' ') + 1 for i in word]
print(wordCounter)
Output: 7
Ein Listenverständnis kann auch eine Funktion akzeptieren, die eine bestimmte Operation ausführt. Fügen wir eine Multiplikatorfunktion ein, die gerade Zahlen in ein Listenverständnis erhält, um zu sehen, wie dies funktioniert:
Numbers = [4, 7, 8, 15, 17, 10]
def multiplier(n):
multiple = n*2
return multiple
multipleEven = [multiplier(i) for i in Numbers if i%2==0]
print(multipleEven)
Output: [8, 16, 20]
Sie können den obigen Code weiterhin in einer einzigen Funktion schreiben, ohne das Verständnis zu verwenden. Ein Listenverständnis ist jedoch hilfreich, wenn Sie mehrere Iterationen durchführen und jede in separate Variablen einfügen müssen.
Sie können beispielsweise eine andere Operation für n ausführen und eine dedizierte Variable dafür haben. Lassen Sie uns das obige Verständnis ändern, um aus ungeraden gerade Zahlen zu generieren:
multipleEvenFromOdds = [multiplier(i) for i in Numbers if not i%2==0]
print(multipleEvenFromOdds)
Output: [14, 30, 34]
Wörterbuch und Set-Verständnis
Neben einem Listenverständnis bietet Python auch ein Wörterbuch und eine Set-Verständnis-Funktionalität.
Schauen Sie sich das folgende Beispielwörterbuch an, um zu sehen, wie es funktioniert:
corresponding = {i: i*2 for i in range(10) if not i%2==0}
print(corr)
Output: {1: 2, 3: 6, 5: 10, 7: 14, 9: 18}
Der obige Code durchläuft die Liste der Zahlen zwischen 1 und 9 und macht sie zu den Schlüsseln. Anschließend wird Python angewiesen, jeden Schlüssel mit zwei zu multiplizieren. Schließlich werden die Ergebnisse dieser Operation als entsprechende Werte für jeden Schlüssel im resultierenden Array dargestellt.
Ein festgelegtes Verständnis ähnelt einem Listenverständnis. Hier ist ein Beispiel für ein festgelegtes Verständnis:
numbers = {i**(2) for i in range(10) if i%4==0}
print(numbers)
Output: {0, 16, 64}
Im Gegensatz zum Listenverständnis werden beim Set-Verständnis jedoch Duplikate entfernt:
nums = {i for i in range(20) if i%2==1 for k in range(10) if k%2==1}
print(nums)
Output: {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}
Sie können den obigen Code anhand eines Listenverständnisses ausprobieren, um festzustellen, wie sie sich unterscheiden.
Können Sie das Listenverständnis jedes Mal verwenden?
Wir haben uns verschiedene Beispiele für das Listenverständnis angesehen und wo Sie sie verwenden können. Wie bei jeder anderen Python-Methode hängt der Anwendungsfall eines Listenverständnisses jedoch von dem spezifischen Problem ab, das Sie lösen möchten. Daher sollten Sie es nur verwenden, wenn es für das spezifische Problem, das Sie lösen möchten, ideal ist.
Ein Zweck des Listenverständnisses besteht darin, Ihren Code zu vereinfachen und lesbarer zu machen. Vermeiden Sie daher Komplexität, wenn Sie damit umgehen. Zum Beispiel kann ein langes Python-Verständnis komplex zu lesen sein. Das macht seinen Zweck zunichte.