Lijsten filteren in Python

In dit artikel bespreken we drie methodes om lijsten te filteren in Python. In het bijzonder zullen we doornemen hoe we list comprehension, generator expressies en de ingebouwde ‘filter()’ methode kunnen gebruiken om lijsten te filteren in python.

Laten we aan de slag gaan!

Voorstel dat we gegevens in een lijst hebben en we willen waarden extraheren of de lijst verkleinen op basis van bepaalde criteria. Laten we de volgende lijst eens bekijken, die een lijst met medische kosten bevat met een aantal ontbrekende waarden:

medical_charges = 
print(medical_charges)

Om te beginnen, kunnen we list comprehension gebruiken om de ‘Geen’-waarden eruit te filteren:

medical_charges = 
print(medical_charges)

We kunnen de elementen van de lijst ook omzetten in gehele getallen met een kleine wijziging in het begrip van de lijst:

medical_charges = 
print(medical_charges)

Door elk element om te zetten naar een geheel getal, kunnen we ook filteren op basis van de grootte van elk geheel getal. Stel dat we kosten groter dan of gelijk aan $500 willen behouden, dan kunnen we de volgende list comprehension schrijven:

medical_charges = 
print(medical_charges)

FILTEREN MET GENERATORS

Als we te maken hebben met een aanzienlijke hoeveelheid gegevens, wat vaak het geval is bij medische dossiers, kunnen we iteratief filteren met behulp van een generatoruitdrukking. Als we onze oorspronkelijke lijst willen omzetten met behulp van een generator expressie doen we het volgende :

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

Het belangrijkste verschil in syntaxis, van lijstbegrip, is het gebruik van haakjes in plaats van vierkante haken. We kunnen nu itereren over de generator:

for charge in charges:
print(charge)

FILTEREN GEBRUIK VAN ‘LIST()’ EN ‘FILTER()’ METHODEN

Er zijn momenten waarop filtercriteria niet eenvoudig kunnen worden uitgedrukt met behulp van lijstbegrip of generatoruitdrukkingen. Laten we eens kijken naar het voorbeeld van het omzetten van onze oorspronkelijke lijst van string gewaardeerde medische kosten in gehele getallen en het verwijderen van ontbrekende waarden:

medical_charges = 

We kunnen een functie definiëren die een lijst neemt en elk element probeert om te zetten in een geheel getal. Als de conversie geen fouten oplevert, geven we true terug. Wanneer de conversie een waardefout oplevert, gebruiken we een except statement om de fout op te vangen en false terug te geven:

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

We kunnen dan de ingebouwde ‘filter()’ en ‘list()’ methoden gebruiken. De ‘filter()’-functie maakt een iterator en met de ‘list()’-methode kunnen we een lijst met resultaten maken:

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

Ik stop hier, maar voel je vrij om te spelen met de voorbeelden hierboven. Je kunt bijvoorbeeld proberen de filtervoorwaarden in het list comprehension voorbeeld zo te veranderen dat alleen kosten kleiner of gelijk aan $500 worden meegenomen.

CONCLUSIES

Om samen te vatten: in dit bericht hebben we vier methoden besproken voor het filteren van lijsten in Python. We hebben list comprehension besproken, wat nuttig is voor de leesbaarheid. We bespraken ook generator expressies die we gebruiken als we willen voorkomen dat we grote resultaten genereren uit grote data sets. Tenslotte bespraken we het gebruik van de ingebouwde ‘filter()’ en ‘list()’ methodes, samen met een aangepaste functie, om lijsten te filteren. Ik hoop dat je deze post nuttig/interessant vond. De code van deze post is beschikbaar op GitHub. Bedankt voor het lezen!

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *