Einführung in das Verständnis von Python-Listen
Das Verständnis von Python-Listen ist eine weitere Möglichkeit, Listen mithilfe einer Iterationsoperation zu erstellen. Es funktioniert genauso wie eine Schleife, aber LC wird speziell zum Zurückgeben von Listen verwendet. Listenverständnisse enthalten Ausdrücke in Klammern, z. B. das Erstellen einer normalen Liste. Der Ausdruck wird für alle Elemente ausgeführt.
Listenverständnisse sind sehr nützlich in der Datenwissenschaft, wo man Listen liest / Spaltennamen filtert / Elemente aus Listen entfernt usw. Obwohl wir Schleifen und Lambda-Funktionen verwenden können, um eine Aktion auszuführen, bietet das Listenverständnis eine elegante und einfache Möglichkeit, diese darzustellen.
Listenverständnisse können verwendet werden, um map () -, reduction () - und filter () -Methoden zu ersetzen.
Listenverständnis ist wie Mengenlehre von Oberschulklassen.
Beispiel:
( x: x is a natural number greater than 15 )
( x: x is a vowel in word 'Data Science', x is a vowel )
Lassen Sie uns ein Listenverständnis für die beiden obigen Aussagen erstellen.
(x for x in range(0, 20) if x>15) (x for x in 'Data Science' if x in ('a', 'e', 'i', 'o', 'u'))
Ausgabe:
(16, 17, 18, 19) ('a', 'a', 'i', 'e', 'e')Listenverständnisse sind leicht zu verstehen und umzusetzen. Grundsätzlich werden diese auf Tabellen angelegt. Beim Schreiben der Syntax für das Listenverständnis sind drei Punkte zu beachten.
- Parameter für die Ausgabe
- Das iterable
- Bedingungen
Die Syntax kann zwei der oben genannten oder drei der oben genannten als Syntax für das Listenverständnis haben.
Syntax:
(output parameter | The Iterable)
(output Parameter | The Iterable | Condition )
Beispiele für das Verständnis von Python-Listen
Hier werden wir diskutieren, wie man das Listenverständnis mit Python einsetzt. Wir werden die Beispiele auf eine andere Weise sehen, da wir sie mit der for-Schleife ausführen und dann mit Hilfe von Listenverständnissen die gleichen erstellen.
Beispiel 1: Finden der perfekten Quadrate
Hier sind Beispiele für perfekte Quadrate mit unterschiedlichen Bedingungen:
1. Mit for Loop
for i in range(1, 30):
if int(i**0.5)==i**0.5:
print(i)
2. Verwenden von List Comprehensions
(x for x in range(1, 30) if int(x**0.5)==x**0.5)
Ausgabe:
Beispiel 2: Holen Sie sich nur Konsonanten aus einem Satz
Hier nehmen wir einen beliebigen Satz und versuchen, Konsonanten im Satz als Ausgabe zu erhalten.
1. For-Schleife verwenden
def consonants_for(sentence):
vowels = 'aeiou'
consonants = () for x in sentence:
if x not in vowels:
consonants.append(x)
return ''.join(consonants)
sentence = 'we are studying list comprehensions'
print("With For Loop : " + consonants_for(sentence))
Ausgabe:
With For Loop: Wr Stdyng Lst Cmprhnsns
2. Verwenden des Listenverständnisses
def consonants_lc(sentence):
vowels = 'aeiou'
return ''.join(( x for x in sentence if x not in vowels))
sentence = 'we are studying list comprehensions'
print("Using List Compr: " + consonants_lc(sentence))
Ausgabe:
Verwenden von List Compr: wr stdyng lst cmprhnsns
Beispiel 3: Erstellen eines Wörterbuchs aus zwei, im Gegensatz zu Listen
Hier sind Beispiele für ein Wörterbuch mit verschiedenen Bedingungen:
1. For-Schleife verwenden
def dict_for(keys, values):
dictionary = ()
for i in range(len(keys)):
dictionary(keys(i)) = values(i) return dictionary
Movie = ('RDB', 'Wanted', 'DDLG', 'Sholay', 'War', ) Actor = ('Aamire', 'Salman', 'SRK', 'Amitabh', 'Hritik') print("FOR-loop result: " + str(dict_for(Movie, Actor)))
Ausgabe:
Ergebnis der FOR-Schleife: ('RDB': 'Aamire', 'Wanted': 'Salman', 'DDLG': 'SRK', 'Sholay': 'Amitabh', 'War': 'Hritik')
2. Verwenden des Listenverständnisses
def dict_lc(keys, values):
return ( keys(i) : values(i) for i in range(len(keys)) )
Movie = ('RDB', 'Wanted', 'DDLG', 'Sholay', 'War', ) Actor = ('Aamire', 'Salman', 'SRK', 'Amitabh', 'Hritik') print("LC result : " + str(dict_lc(Movie, Actor)))
Ausgabe:
LC-Ergebnis: ('RDB': 'Aamire', 'Wanted': 'Salman', 'DDLG': 'SRK', 'Sholay': 'Amitabh', 'War': 'Hritik')
Vorteile von Python List Comprehension
Listenverständnisse erfüllen die gleiche Aufgabe, jedoch auf andere Weise!
Das Listenverständnis hat viele Vorteile gegenüber der Schleife und anderen Methoden. Einige der Vorteile sind wie folgt:
- List Comprehensions sind leicht zu verstehen und machen Code elegant. Wir können das Programm mit einfachen Ausdrücken schreiben.
- Listenverständnisse sind viel schneller als für Schleifen und andere Methoden wie eine Karte. (Dasselbe wird im folgenden Beispiel erklärt:
Als Referenz nehmen wir Beispiel 1 und berechnen die Zeit, die verschiedene Methoden benötigen, um dieselbe Funktion auszuführen. Zuerst sehen wir die Zeit, die von "for loop" benötigt wird, und dann die Zeit, die von der map () -Methode benötigt wird, und zuletzt die Zeit, die von Listenverständnissen benötigt wird.
Eine Tabelle zeigt die von den verschiedenen Techniken benötigte Zeit.
1. Für Schleife
Beispiel für die Verwendung der folgenden for-Schleife:
Code:
def perf_square(x):
output = () for i in x:
if int(i**0.5)==i**0.5:
output.append(i)
return output
%timeit perf_square(range(1, 30))
2. Kartenmethode
Beispiel mit der unten angegebenen Kartenmethode:
Code:
def perf_square_map(x):
return map(lambda i: i**0.5==i**0.5, x)
%timeit perf_square_map(range(1, 30))
3. Verstehen auflisten
Beispiel mit dem unten angegebenen Listenverständnis:
Code:
def perf_square_lc(x):
return (i**0.5 == i**0.5 for i in x) %timeit perf_square_lc(range(1, 30))
Ausgabe:
Methode | Zeit |
Für Schleife | 787 ns |
Map () -Methode | 518 ns |
Listenverständnisse | 276 ns |
Die Laufzeit des Listenverständnisses ist eindeutig 2, 85-mal schneller als für die Schleife und 1, 87-mal schneller als die Kartenmethode. Listenverständnisse hinterlassen andere Methoden mit großem Spielraum. Es könnte dann Spekulationen geben, warum wir nicht einfach LC an allen Stellen und keine Schleifen verwenden? LC ist in den meisten Fällen schneller und kann Schleifen in fast 80% der Fälle ersetzen. Aber wir können keine Schleifen ersetzen. In einigen Fällen haben wir eine gute Anzahl von Bedingungen und Klassen sind in einer Schleife verschachtelt. In diesen Fällen kann die Verwendung von LC ziemlich umständlich und auch nicht durchführbar sein. In solchen Situationen ist es besser, Schleifen zu fahren. Sie können jedoch das Listenverständnis in for-Schleifen verwenden, um andere for-Schleifen zu ersetzen. Dies verkürzt die Ausführungszeit und verbessert die Benutzerfreundlichkeit des Codes.
- Wir können mehrere Bedingungen in einem Listenverständnis verschachteln.
- LC kann mehrere Variablen manipulieren.
- Es ist nicht erforderlich, einen separaten Befehl anzugeben, um die Ausgabe zu erhalten.
- Listenverständnisse reduzieren die Komplexität des Codes.
- Listenverständnisse sind effizient.
Fazit
Listenverständnisse werden zum Erstellen von Listen aus dem iterativen Prozess verwendet. Listenverständnisse sind einfach zu verstehen / zu implementieren und machen Code elegant. Listenverständnisse sind kompakt und benutzerfreundlich.
Wir haben die Syntax für das Listenverständnis zusammen mit einigen guten Beispielen besprochen. Zuletzt haben wir ein Programm geschrieben, um das Timing für jede Methode zu ermitteln. Wir kamen zu dem Schluss, dass die LC 2, 85-mal schneller als die for-Schleife und 1, 87-mal schneller als die map () -Methode ist.
Empfohlene Artikel
Dies ist eine Anleitung zum Verständnis der Python-Liste. Hier diskutieren wir die Vorteile des Verständnisses von Python-Listen zusammen mit der Syntax und Beispielen mit verschiedenen Bedingungen. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren.
- Konstruktor in Java
- Sortierung in Java
- Konstruktor in Java
- JCheckBox in Java
- Anleitung zum Sortieren in C # mit Beispielen
- Sortierfunktion in Python mit Beispielen
- Schleifen in VBScript mit Beispielen
- Beispiele zum Implementieren von Checkbox in Bootstrap