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.

  1. Parameter für die Ausgabe
  2. Das iterable
  3. 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:

  1. List Comprehensions sind leicht zu verstehen und machen Code elegant. Wir können das Programm mit einfachen Ausdrücken schreiben.
  2. 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:

MethodeZeit
Für Schleife787 ns
Map () -Methode518 ns
Listenverständnisse276 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.

  1. Konstruktor in Java
  2. Sortierung in Java
  3. Konstruktor in Java
  4. JCheckBox in Java
  5. Anleitung zum Sortieren in C # mit Beispielen
  6. Sortierfunktion in Python mit Beispielen
  7. Schleifen in VBScript mit Beispielen
  8. Beispiele zum Implementieren von Checkbox in Bootstrap