Jak filtrować listę w Pythonie we właściwy sposób, aby lepiej wykorzystać swoje dane

W Pythonie jednym z najpopularniejszych sposobów przechowywania danych sekwencyjnych lub uporządkowanych jest użycie list. Lista w Pythonie to uporządkowana, zmienna, wbudowana struktura danych, która służy do przechowywania kolekcji danych. Elementy przechowywane na liście są indeksowane od zera, a użytkownicy mogą zmieniać zawartość listy po jej utworzeniu.

Fakt, że elementy na liście są indeksowane, umożliwia przechowywanie zduplikowanych elementów na liście. Listy w Pythonie mogą również zawierać elementy różnych typów danych. Pozycje na liście są oddzielone przecinkami i ujęte w nawiasy kwadratowe.

Oto przykłady list w Pythonie:

# A list containing one data type - String
colors = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']

# A list containing multiple data types
movies = ['Transformers', 2012, 'Avengers', 300]

# A list with duplicate values
users = ['John', 'Mary', 'Elizabeth', 'John']

Listy są bardzo wszechstronną strukturą danych i można wykonywać wiele operacji na danych przechowywanych na listach. Powszechną i przydatną operacją wykonywaną na listach jest filtrowanie danych przechowywanych na liście.

Dlaczego filtrowanie list jest ważne

Filtrowanie listy oznacza wyodrębnianie określonych podzbiorów danych, które spełniają określone kryteria. Na przykład mogą nas interesować tylko liczby parzyste na liście zawierającej liczby od 1 do 10. Aby wyodrębnić takie dane z listy, wystarczy przefiltrować listę, aby uzyskać liczby dokładnie podzielne przez dwa.

Filtrowanie jest szczególnie przydatne w manipulacji i analizie danych, ponieważ umożliwia usuwanie niepożądanych elementów z list, tworzenie nowych list zawierających elementy spełniające określone kryteria oraz wyodrębnianie danych spełniających określone warunki.

Niektóre rzeczywiste zastosowania list filtrowania obejmują:

  • Walidacja danych — podczas pracy z listą możesz chcieć pracować tylko z danymi, które spełniają określone kryteria. Na przykład na liście użytkowników mogą Cię zainteresować użytkownicy, którzy mają zarówno imię, jak i nazwisko. Filtrowanie pozwala zweryfikować i zweryfikować dane na liście przed ich przetworzeniem. W ten sposób unikniesz pracy z danymi, które nie spełniają Twoich wymagań.
  • Czyszczenie danych — ponieważ listy mogą przechowywać różne typy danych, nierzadko zdarza się, że listy zawierają niechciane dane, które Cię nie interesują. Na przykład na liście zawierającej nazwy możesz nie być zainteresowany wartościami liczbowymi w Lista. Poprzez filtrowanie możesz usunąć niechciane dane.
  • Analiza danych – Filtrowanie danych jest szczególnie przydatne w analizie danych, ponieważ pozwala skupić się na określonych podzbiorach danych, co pozwala łatwo zidentyfikować wzorce i trendy. Na przykład na liście studentów można odfiltrować uczniów i uczennice i wykorzystać wynik w analizie danych. Możesz nawet filtrować według wieku, lokalizacji i klasy. Pozwala to na wyciąganie bardziej użytecznych wniosków z określonych podzbiorów danych na liście

Filtrowanie list jest bardzo przydatną funkcją, ponieważ daje kontrolę nad danymi przechowywanymi na liście, umożliwiając pracę tylko z danymi, które Cię interesują.

Kierowanie na określone podzbiory danych przechowywanych na liście jest bardzo przydatne, ponieważ usprawnia przetwarzanie i analizę danych, dzięki czemu procesy są lepsze, szybsze i dokładniejsze.

Korzystanie z funkcji filter().

Funkcja filter() jest wbudowaną funkcją Pythona, której można używać do iteracji po obiektach iterowalnych, takich jak listy, krotki, zbiory lub słowniki, oraz do wyodrębniania elementów z elementów iterowalnych, które spełniają dany warunek.

Iterowalny w Pythonie to obiekt, który może przechodzić przez jego elementy jeden po drugim. Iteracja przez iterowalny zwraca elementy w iterowalnym pojedynczo.

Składnia funkcji filtrującej jest następująca:

filter(function, iterable)

function – funkcja Pythona zawierająca warunek filtrowania

iterowalny – iterowalny, który ma być filtrowany. W tym przypadku użyjemy listy.

Funkcja filter() przyjmuje przekazaną funkcję i stosuje ją do każdego elementu przekazanej iteracji, testując warunek filtrowania względem elementu. Jeśli element spełnia warunek, to znaczy zwraca wartość logiczną true, która zostanie wybrana przez funkcję filter(). W przypadku, gdy nie spełnia warunku, pozycja nie jest wybrana.

Funkcja filter() zwraca obiekt iterowalny z elementami, które spełniły warunek filtrowania. Możesz utworzyć nową listę zawierającą elementy, które spełniły warunek filtrowania, używając funkcji list().

Aby zobaczyć działanie funkcji filter() przyjrzyj się poniższej liście, która jest filtrowana w celu wybrania liczb mniejszych niż 50:

#A list of numbers
numbers = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

# function containing the filtering condition
def is_even(num):
   if num < 50:
      return True
   else:
      return False

# the function list() is used to create a list from the iterable
# returned by the filter() function
filtered_numbers = list(filter(is_even, numbers))
print(filtered_numbers)

Powyższy kod drukuje następujący wynik:

[15, 46, 24, 37]

Korzystanie z pętli for

W Pythonie pętla for jest instrukcją sterowania przepływem używaną do iteracji po sekwencyjnych strukturach danych, takich jak lista, krotki, łańcuchy i tablice. Pętla for wielokrotnie wykonuje blok kodu dla każdego elementu w sekwencji.

Ogólna składnia pętli for jest następująca:

for item in iterable:
    # Block of code to be executed for each item in the iterabele

item – zmienna reprezentująca aktualnie przetwarzany element w iteracji pętli

iterowalna – sekwencja, po której iteruje pętla for. W tym przypadku lista

Aby przefiltrować listę za pomocą pętli for, musimy przekazać nasz warunek filtrowania w sekcji kodu, który ma zostać wykonany. W ten sposób każdy element zostanie oceniony, aby zobaczyć, czy spełnia dany warunek.

Używając pętli for do filtrowania listy, musisz również utworzyć pustą listę, do której będziesz dołączać wartości spełniające warunek filtrowania.

Aby zobaczyć to w działaniu, przefiltrujmy listę liczb, aby uzyskać liczby mniejsze niż 50, używając pętli for:

numbers = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

filtered_numbers = []

for num in numbers:
    if num < 50:
        # append() used to add a number that passes the condition
        # into filtered_numbers.
        filtered_numbers.append(num)

print(filtered_numbers)

Powyższy kod drukuje następujący wynik:

[15, 46, 24, 37]

Korzystanie z innej listy

Listę można filtrować, używając innej, sprawdzając, czy element z listy, którą chcesz filtrować, pojawia się na innej liście. Rozważmy na przykład dwie poniższe listy

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']

vowels = ['a', 'e', 'i', 'o', 'u']

Na liście zwanej powyżej literami możemy określić, które pozycje na liście nie są samogłoskami, sprawdzając, czy pozycja pojawia się na liście samogłosek, czy nie. Jeśli pozycja nie pojawia się na liście samogłosek, to nie jest to samogłoska.

W ten sposób możemy uzyskać wszystkie znaki w literach, które nie są samogłoskami. Aby to zrobić, wykonaj następujący kod:

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
vowels = ['a', 'e', 'i', 'o', 'u']

not_vowel = []

for letter in letters:
    if letter not in vowels:
        not_vowel.append(letter)
print(not_vowel)

Powyższy kod drukuje następujące dane wyjściowe, które zawierają znaki w literach, które nie są samogłoskami.

['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']

Używanie rozumienia listy

W Pythonie rozumienie list oferuje krótszą, bardziej zwięzłą i przejrzystą składnię do tworzenia nowej listy z istniejącej listy. Funkcja rozumienia list ma możliwość zredukowania wielu wierszy kodu używanych do tworzenia nowej listy z innej listy za pomocą pętli for do jednego wiersza.

Dzieje się tak, ponieważ podczas korzystania z rozumienia listy elementy definiuje się i dodaje do nowej listy w jednym wierszu.

Składnia rozumienia listy jest następująca:

new_list = [expression for element in iterable if condition]

nowa_lista – nowa lista zawierająca elementy dodane przez rozumienie listy

wyrażenie – operacja, która zostanie zastosowana do każdego elementu iterowalnego

item – nazwa zmiennej reprezentująca aktualnie aktywny element w iterowalnym

iterowalny – iterowalny, z którego zostaną wybrane elementy.

warunek if – opcjonalna część, w której można dodać warunek, aby filtrować elementy, aby dodać tylko te, które spełniają dany warunek, do tworzonej nowej listy.

Aby zobaczyć rozumienie listy w działaniu i jak bardzo może uprościć proces filtrowania i tworzenia nowej listy, użyjemy listy liter i samogłosek do odfiltrowania elementów na liście liter, których nie ma na liście samogłosek. Aby to zrobić, wykonaj następujący kod:

letters = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
vowels = ['a', 'e', 'i', 'o', 'u']

# list comprehension
not_vowel = [letter for letter in letters if letter not in vowels]
print(not_vowel)

Wyjście powyższego kodu pokazano poniżej:

['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']

Dane wyjściowe są podobne do poprzedniego przykładu, w którym zastosowano pętlę for do filtrowania listy przy użyciu innej listy. Jednak zużywa mniej wierszy kodu, aby osiągnąć ten sam wynik.

Wniosek

Podczas pracy z danymi w Pythonie typową operacją, którą musisz wykonać, jest filtrowanie danych z elementu iterowalnego, takiego jak lista. Jest to bardzo przydatny krok w analizie i przetwarzaniu danych, ponieważ umożliwia pracę tylko z danymi, które są istotne dla wykonywanej operacji lub przetwarzania.

Bardzo popularną sekwencyjną strukturą danych w Pythonie jest lista. Jeśli pracujesz z listą i musisz ją przefiltrować, rozważ użycie dowolnej z metod opisanych w artykule.

Możesz także przeczytać o tym, jak używać funkcji lambda w Pythonie z przykładami.

x