Filtrowanie list w Pythonie

W tym poście omówimy trzy metody filtrowania list w Pythonie. Konkretnie, przejdziemy przez to, jak używać rozumienia listy, wyrażeń generatora i wbudowanej metody 'filter()' do filtrowania list w Pythonie.

Zacznijmy!

Załóżmy, że mamy dane na liście i chcemy wyodrębnić wartości lub zredukować listę na podstawie pewnych kryteriów. Konkretnie, rozważmy następującą listę, która zawiera listę opłat medycznych z pewnymi brakującymi wartościami:

medical_charges = 
print(medical_charges)

Na początek, możemy użyć list comprehension, aby odfiltrować wartości 'None':

medical_charges = 
print(medical_charges)

Możemy również przekonwertować elementy listy na liczby całkowite, zmieniając nieco sposób rozumienia listy:

medical_charges = 
print(medical_charges)

Po przekonwertowaniu każdego elementu na liczbę całkowitą, możemy również filtrować na podstawie wielkości każdej liczby całkowitej. Załóżmy, że chcemy zachować opłaty większe lub równe 500$, możemy napisać następującą listę comprehension:

medical_charges = 
print(medical_charges)

FILTROWANIE Z WYKORZYSTANIEM GENERATORÓW

Jeśli mamy do czynienia ze znaczną ilością danych, co często ma miejsce w przypadku dokumentacji medycznej, możemy filtrować iteracyjnie używając wyrażenia generatora. Jeśli chcemy przekonwertować naszą oryginalną listę za pomocą wyrażenia generatora, wykonujemy następujące czynności :

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

Główna różnica w składni, od zrozumienia listy, jest użycie nawiasów zamiast nawiasów kwadratowych. Możemy teraz iterować po generatorze:

for charge in charges:
print(charge)

FILTROWANIE WYKORZYSTANIE METOD 'LIST()' I 'FILTER()'

Czasami zdarza się, że kryteria filtrowania nie mogą być łatwo wyrażone za pomocą list comprehension lub wyrażeń generatora. Rozważmy przykład konwersji naszej oryginalnej listy opłat medycznych na liczby całkowite i usunięcia brakujących wartości:

medical_charges = 

Możemy zdefiniować funkcję, która pobierze listę i spróbuje przekonwertować każdy element na liczbę całkowitą. Gdy konwersja nie wyrzuca żadnych błędów, zwracamy wartość true. Kiedy konwersja wyrzuca błąd wartości, używamy instrukcji except, aby złapać błąd i zwrócić false:

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

Możemy wtedy użyć wbudowanych metod 'filter()' i 'list()'. Funkcja 'filter()’tworzy iterator, a metoda 'list()' pozwala nam na stworzenie listy wyników:

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

Przestanę tutaj, ale nie krępuj się bawić powyższymi przykładami. Na przykład, możesz spróbować zmienić warunki filtrowania w przykładzie z rozumieniem listy, aby zawierały tylko opłaty mniejsze lub równe 500$.

Podsumowując, w tym poście omówiliśmy cztery metody filtrowania listy w Pythonie. Omówiliśmy także rozumienie listy, które jest przydatne ze względu na jej czytelność. Omówiliśmy również wyrażenia generatora, których używamy, jeśli chcemy uniknąć generowania dużych wyników z dużych zbiorów danych. Na koniec, omówiliśmy użycie wbudowanych metod 'filter()' i 'list()', wraz z niestandardową funkcją, do filtrowania list. Mam nadzieję, że ten post był dla Ciebie przydatny/interesujący. Kod z tego postu jest dostępny na GitHubie. Dziękuję za przeczytanie!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *