W Pythonie, listy są jednym z najczęściej wykorzystywanych narzędzi do gromadzenia i porządkowania danych. Lista w Pythonie to elastyczna, wbudowana struktura danych, która pozwala na przechowywanie zbiorów informacji w określonej kolejności. Co istotne, elementy listy są indeksowane, zaczynając od zera, a zawartość listy może być modyfikowana po jej utworzeniu.
Dzięki indeksowaniu, na liście mogą znajdować się elementy o tej samej wartości. Listy w Pythonie cechuje również zdolność do przechowywania elementów różnych typów danych. Poszczególne elementy listy są rozdzielane przecinkami i umieszczane w nawiasach kwadratowych.
Oto kilka przykładów list utworzonych w Pythonie:
# Lista zawierająca elementy jednego typu - ciągi znaków kolory = ['Czerwony', 'Pomarańczowy', 'Żółty', 'Zielony', 'Niebieski', 'Indygo', 'Fioletowy'] # Lista z elementami różnych typów danych filmy = ['Transformers', 2012, 'Avengers', 300] # Lista z powtarzającymi się wartościami użytkownicy = ['Jan', 'Maria', 'Elżbieta', 'Jan']
Listy są niezwykle wszechstronną strukturą danych, pozwalającą na wykonywanie różnorodnych operacji na zgromadzonych danych. Jedną z fundamentalnych i często wykorzystywanych operacji jest filtrowanie danych znajdujących się na liście.
Dlaczego filtrowanie list jest tak istotne?
Filtrowanie listy to nic innego jak wyodrębnianie konkretnych fragmentów danych, które spełniają zadane kryteria. Przykładowo, możemy być zainteresowani jedynie liczbami parzystymi w zbiorze liczb od 1 do 10. Aby wyselekcjonować takie dane, wystarczy przefiltrować listę, wybierając liczby podzielne przez dwa.
Filtrowanie jest szczególnie przydatne podczas manipulacji i analizy danych, gdyż umożliwia usuwanie niepotrzebnych elementów z list, tworzenie nowych list, które zawierają tylko wybrane dane oraz wyodrębnianie informacji spełniających określone warunki.
Oto kilka przykładów zastosowania filtrowania list w praktyce:
- Walidacja danych: Podczas pracy z listami, często chcemy korzystać jedynie z danych spełniających określone wymagania. Na przykład, w liście użytkowników, możemy być zainteresowani tylko tymi, którzy mają zarówno imię, jak i nazwisko. Filtrowanie umożliwia weryfikację danych przed ich dalszym przetwarzaniem, eliminując nieprawidłowe wpisy.
- Czyszczenie danych: Ze względu na możliwość przechowywania różnorodnych typów danych na listach, zdarza się, że zawierają one niechciane informacje. Przykładowo, w liście z nazwami, mogą znajdować się liczby, które nie są dla nas istotne. Filtrowanie pozwala na usunięcie takich zbędnych danych.
- Analiza danych: Filtrowanie danych jest niezwykle pomocne w analizie, ponieważ pozwala skupić się na konkretnych fragmentach, co ułatwia identyfikację wzorców i trendów. Przykładowo, z listy studentów, możemy wyselekcjonować osoby konkretnej płci, a następnie wykorzystać uzyskane dane w dalszej analizie. Możemy także filtrować studentów według wieku, miejsca zamieszkania czy roku studiów, co pozwala na wyciąganie bardziej precyzyjnych wniosków.
Filtrowanie list to niezwykle użyteczna funkcja, która daje nam kontrolę nad danymi, pozwalając na pracę tylko z tymi, które są dla nas istotne.
Skupienie się na specyficznych fragmentach danych przechowywanych na listach usprawnia przetwarzanie i analizę, sprawiając, że te procesy stają się efektywniejsze, szybsze i dokładniejsze.
Wykorzystanie funkcji filter().
Funkcja filter()
jest wbudowaną funkcją Pythona, pozwalającą na iterację po obiektach iterowalnych (listy, krotki, zbiory, słowniki) i wyodrębnianie elementów spełniających określone kryteria.
Obiekt iterowalny w Pythonie to obiekt, który można przeglądać element po elemencie. Iteracja po obiekcie iterowalnym zwraca jego elementy kolejno.
Składnia funkcji filter()
prezentuje się następująco:
filter(funkcja, obiekt_iterowalny)
funkcja
– funkcja Pythona zawierająca warunek filtrowania
obiekt_iterowalny
– obiekt iterowalny, który poddajemy filtracji. W naszym przypadku będzie to lista.
Funkcja filter()
przyjmuje funkcję oraz obiekt iterowalny i stosuje ją do każdego elementu obiektu, weryfikując, czy dany element spełnia warunek filtrowania. Jeśli warunek jest spełniony (funkcja zwraca wartość logiczną True
), element zostaje wybrany. W przeciwnym wypadku element jest pomijany.
Funkcja filter()
zwraca obiekt iterowalny z wybranymi elementami. Możemy utworzyć nową listę z elementów, które spełniły warunek, wykorzystując funkcję list()
.
Aby lepiej zrozumieć działanie funkcji filter()
, przyjrzyjmy się przykładowi, w którym filtrujemy listę w celu wybrania liczb mniejszych niż 50:
# Lista liczb liczby = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61] # Funkcja zawierająca warunek filtrowania def jest_mniejsza_od_50(liczba): if liczba < 50: return True else: return False # Funkcja list() tworzy listę z iterowalnego obiektu # zwracanego przez funkcję filter() przefiltrowane_liczby = list(filter(jest_mniejsza_od_50, liczby)) print(przefiltrowane_liczby)
Powyższy kod wypisze następujący wynik:
[15, 46, 24, 37]
Wykorzystanie pętli for
Pętla for
w Pythonie jest instrukcją kontroli przepływu, która pozwala na iterację po sekwencyjnych strukturach danych, takich jak listy, krotki, łańcuchy znaków i tablice. Pętla for
wykonuje blok kodu wielokrotnie, dla każdego elementu w sekwencji.
Ogólna składnia pętli for
jest następująca:
for element in obiekt_iterowalny: # Blok kodu do wykonania dla każdego elementu
element
– zmienna, która reprezentuje aktualnie przetwarzany element w iteracji pętli
obiekt_iterowalny
– sekwencja, po której iteruje pętla for
. W tym przypadku lista.
Aby przefiltrować listę za pomocą pętli for
, musimy umieścić warunek filtrowania w bloku kodu, który ma zostać wykonany. W ten sposób każdy element będzie sprawdzany pod kątem spełniania warunku.
Podczas filtrowania listy za pomocą pętli for
, należy również utworzyć pustą listę, do której będziemy dodawać elementy spełniające warunek.
Aby zobaczyć, jak to działa, przefiltrujmy listę liczb, wybierając te, które są mniejsze niż 50, przy użyciu pętli for
:
liczby = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61] przefiltrowane_liczby = [] for liczba in liczby: if liczba < 50: # append() służy do dodawania liczb, które spełniły warunek # do listy przefiltrowane_liczby przefiltrowane_liczby.append(liczba) print(przefiltrowane_liczby)
Powyższy kod wypisze następujący wynik:
[15, 46, 24, 37]
Wykorzystanie innej listy
Możemy przefiltrować listę, wykorzystując inną listę, sprawdzając, czy element z filtrowanej listy znajduje się w tej drugiej. Rozważmy na przykład dwie listy:
litery = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n'] samogloski = ['a', 'e', 'i', 'o', 'u']
Na liście litery
możemy określić, które znaki nie są samogłoskami, sprawdzając, czy element znajduje się na liście samogloski
. Jeśli element nie występuje na liście samogloski
, to nie jest samogłoską.
W ten sposób możemy uzyskać wszystkie znaki z listy litery
, które nie są samogłoskami. Aby to zrobić, wykonujemy następujący kod:
litery = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n'] samogloski = ['a', 'e', 'i', 'o', 'u'] nie_samogloski = [] for litera in litery: if litera not in samogloski: nie_samogloski.append(litera) print(nie_samogloski)
Powyższy kod wyświetli następujące dane, które zawierają znaki z listy litery
, które nie są samogłoskami.
['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']
Wykorzystanie składni list składanych (list comprehension)
W Pythonie, składnia list składanych to skrócony, bardziej przejrzysty sposób tworzenia nowej listy na podstawie innej, istniejącej listy. Użycie list składanych pozwala na redukcję wielu wierszy kodu używanego do tworzenia nowej listy przy użyciu pętli for
do pojedynczej linijki.
Dzieje się tak, ponieważ przy wykorzystaniu list składanych, elementy są definiowane i dodawane do nowej listy w jednym wierszu.
Składnia list składanych przedstawia się następująco:
nowa_lista = [wyrażenie for element in obiekt_iterowalny if warunek]
nowa_lista
– nowa lista zawierająca elementy dodane za pomocą list składanych
wyrażenie
– operacja, która zostanie zastosowana do każdego elementu obiektu iterowalnego
element
– nazwa zmiennej reprezentująca aktualnie przetwarzany element z obiektu iterowalnego
obiekt_iterowalny
– obiekt iterowalny, z którego zostaną wybrane elementy.
if warunek
– opcjonalna część, gdzie można dodać warunek, aby filtrować elementy i dodać tylko te, które spełniają dane kryteria do nowej, tworzonej listy.
Aby zobaczyć, jak działają list składane i jak bardzo mogą uprościć proces filtrowania oraz tworzenia nowej listy, wykorzystamy listy litery
i samogloski
do odfiltrowania elementów, które nie znajdują się na liście samogloski
. Aby to zrobić, wykonujemy następujący kod:
litery = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n'] samogloski = ['a', 'e', 'i', 'o', 'u'] # List comprehension nie_samogloski = [litera for litera in litery if litera not in samogloski] print(nie_samogloski)
Wynik powyższego kodu jest przedstawiony poniżej:
['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']
Wynik jest identyczny jak w poprzednim przykładzie, gdzie do filtrowania listy wykorzystano pętlę for
oraz inną listę. Natomiast, do osiągnięcia tego samego rezultatu, zużywa mniej wierszy kodu.
Podsumowanie
Podczas pracy z danymi w Pythonie, filtrowanie danych z obiektu iterowalnego, takiego jak lista, jest powszechną operacją. Jest to bardzo przydatny etap analizy i przetwarzania danych, umożliwiający pracę jedynie z tymi informacjami, które są istotne w danym kontekście.
Bardzo popularną sekwencyjną strukturą danych w Pythonie jest lista. Jeśli pracujesz z listą i potrzebujesz ją przefiltrować, rozważ skorzystanie z jednej z metod opisanych w tym artykule.
Możesz również dowiedzieć się więcej na temat wykorzystania funkcji lambda w Pythonie z przykładami.