Filtern von Listen in Python

In diesem Beitrag werden wir drei Methoden zum Filtern von Listen in Python besprechen. Insbesondere werden wir durchgehen, wie man Listenverständnis, Generatorausdrücke und die eingebaute ‚filter()-Methode verwendet, um Listen in Python zu filtern.

Lassen Sie uns anfangen!

Angenommen, wir haben Daten in einer Liste und wollen Werte extrahieren oder die Liste basierend auf einigen Kriterien reduzieren. Betrachten wir konkret die folgende Liste, die eine Liste über medizinische Gebühren mit einigen fehlenden Werten enthält:

medical_charges = 
print(medical_charges)

Zu Beginn, können wir das Listenverständnis verwenden, um die ‚None‘-Werte herauszufiltern:

medical_charges = 
print(medical_charges)

Mit einer kleinen Änderung des Listenverständnisses können wir auch die Elemente der Liste in Ganzzahlen umwandeln:

medical_charges = 
print(medical_charges)

Nach der Umwandlung jedes Elements in eine Ganzzahl, können wir auch nach dem Betrag jeder ganzen Zahl filtern. Angenommen, wir wollen Gebühren größer oder gleich 500 $ behalten, können wir das folgende Listenverständnis schreiben:

medical_charges = 
print(medical_charges)

FILTERN MIT GENERATOREN

Wenn wir es mit einer großen Menge an Daten zu tun haben, was bei medizinischen Aufzeichnungen oft der Fall ist, können wir iterativ mit Hilfe eines Generatorausdrucks filtern. Wenn wir unsere ursprüngliche Liste mithilfe eines Generatorausdrucks umwandeln wollen, gehen wir wie folgt vor:

charges = (int(n) for n in medical_charges if n != None)
print(charges)

Der Hauptunterschied in der Syntax, vom Listenverständnis, ist die Verwendung von Klammern anstelle von eckigen Klammern. Wir können nun über den Generator iterieren:

for charge in charges:
print(charge)

FILTERN VERWENDUNG VON ‚LIST()‘ UND ‚FILTER()‘-METHODEN

Es gibt Fälle, in denen sich Filterkriterien nicht einfach mit Listenverständnis oder Generatorausdrücken ausdrücken lassen. Betrachten wir das Beispiel der Konvertierung unserer ursprünglichen Liste von Arztrechnungen mit Zeichenkettenwerten in Ganzzahlen und das Entfernen fehlender Werte:

medical_charges = 

Wir können eine Funktion definieren, die eine Liste nimmt und versucht, jedes Element in eine Ganzzahl zu konvertieren. Wenn die Konvertierung keine Fehler auslöst, geben wir true zurück. Wenn die Konvertierung einen Wertfehler auslöst, verwenden wir eine except-Anweisung, um den Fehler abzufangen und false zurückzugeben:

def convert_and_filter(input_list):
try:
int(input_list)
return True
except ValueError:
return False

Wir können dann die eingebauten Methoden ‚filter()‘ und ‚list()‘ verwenden. Die ‚filter()‘-Funktion erzeugt einen Iterator und die ‚list()‘-Methode erlaubt es uns, eine Liste von Ergebnissen zu erstellen:

charges = list(filter(convert_and_filter, medical_charges))
print(charges)

Ich höre hier auf, aber Sie können gerne mit den obigen Beispielen herumspielen. Sie können z. B. versuchen, die Filterbedingungen im Beispiel für das Listenverständnis so zu ändern, dass nur Kosten kleiner oder gleich 500 $ berücksichtigt werden.

ZUSAMMENFASSUNG

Zusammenfassend haben wir in diesem Beitrag vier Methoden zur Listenfilterung in Python besprochen. Wir haben das Listenverständnis besprochen, das wegen seiner Lesbarkeit nützlich ist. Wir haben auch Generatorausdrücke besprochen, die wir verwenden, wenn wir vermeiden wollen, große Ergebnisse aus großen Datensätzen zu erzeugen. Schließlich haben wir die Verwendung der eingebauten Methoden ‚filter()‘ und ‚list()‘ sowie einer benutzerdefinierten Funktion besprochen, um Listen zu filtern. Ich hoffe, Sie fanden diesen Beitrag nützlich/interessant. Der Code aus diesem Beitrag ist auf GitHub verfügbar. Vielen Dank fürs Lesen!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.