CodeGym /Kursy /Python SELF PL /Pętle po liście

Pętle po liście

Python SELF PL
Poziom 7 , Lekcja 6
Dostępny

6.1 Pętla for

W Pythonie pętle po elementach listy często realizowane są za pomocą pętli for. To jedno z najczęściej używanych podejść do iteracji po liście, pozwalające wykonać blok kodu dla każdego elementu na liście.

Podstawy pętli for

Pętla for w Pythonie przechodzi po każdym elemencie listy, tymczasowo przypisując wartość bieżącego elementu zmiennej podanej po słowie kluczowym for. Przykład:


fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

Przejście przez listę w odwrotnej kolejności można zrealizować za pomocą cięć:


fruits = ["apple", "banana", "cherry"]
for fruit in fruits[::-1]:
    print(fruit)

6.2 Pętla for z indeksami

Oprócz przechodzenia przez listę za pomocą klasycznego for, można przejść przez listę używając pętli for w połączeniu z funkcją range(). To pozwala pracować nie tylko z samymi elementami, ale także z ich pozycjami, co bywa konieczne przy wykonywaniu bardziej skomplikowanych manipulacji danymi.

Podstawy iteracji indeksowanej

Do iteracji po liście z dostępem do indeksu każdego elementu można użyć następującego podejścia:


my_list = ['a', 'b', 'c', 'd']
for i in range(len(my_list)):
    print(f'Index: {i}, Element: {my_list[i]}')

Zalety używania indeksów

Użycie indeksów w pętlach pozwala nie tylko uzyskać dostęp do każdego elementu, ale także zmieniać elementy listy na miejscu. To szczególnie przydatne, gdy trzeba modyfikować listę podczas iteracji.

Przykład:


my_list = ['a', 'b', 'c', 'd']
for i in range(len(my_list)):
    my_list[i] = my_list[i] * 2

Przykłady skomplikowanych manipulacji

Z indeksami łatwo realizować algorytmy, które wymagają równoczesnego dostępu do kilku elementów listy, na przykład do porównania bieżącego elementu z poprzednim lub następnym:

Przykład:


my_list = [3, 5, 2, 9, 4]
for i in range(1, len(my_list)):
    if my_list[i] > my_list[i - 1]:
        print(f'{my_list[i]} jest większy niż {my_list[i - 1]}')

6.3 Wykorzystanie funkcji enumerate()

W Pythonie funkcja enumerate() zapewnia wygodny sposób iteracji po elementach listy z jednoczesnym dostępem do ich indeksów. To szczególnie przydatne, gdy konieczne jest przetwarzanie zarówno indeksu, jak i wartości elementu listy w ramach pętli.

Podstawy funkcji enumerate()

Funkcja enumerate() opakowuje listę w specjalny obiekt i zwraca iterator, który produkuje krotki (pary wartości), składające się z indeksu i wartości elementu:


my_list = ["apple", "banana", "cherry"]
for index, element in enumerate(my_list):
    print(f'Index: {index}, Element: {element}')

Teraz masz nie tylko element, ale i jego indeks.

Zalety enumerate()

Użycie enumerate() sprawia, że kod jest bardziej czytelny i pozwala uniknąć konieczności ręcznego zarządzania indeksami za pomocą range(len(...)). To upraszcza manipulacje elementami listy, takie jak zmiana, dostęp do elementów i wykonywanie kontrolnych sprawdzeń.

Przykłady użycia

enumerate() idealnie nadaje się do zadań, gdzie wymagana jest jednoczesna zmiana elementów listy lub porównywanie elementów z ich indeksami:


my_list = ["apple", "banana", "cherry"]
for index, element in enumerate(my_list):
    if index % 2 == 0:
        print(f'Element {element} na parzystym indeksie {index}')

6.4 Pętla while

Omówiliśmy for, a teraz porozmawiajmy o pętli while. Ta pętla również może być przydatna przy pracy z elementami listy.

Przypominam, że pętla while zaczyna swoją pracę od sprawdzenia warunku. Jeśli warunek jest prawdziwy, wykonywane jest ciało pętli, a następnie warunek jest sprawdzany ponownie. Proces powtarza się do momentu, aż warunek stanie się fałszywy.

Przykład iteracji po liście

Powiedzmy, że masz listę liczb i chcesz iterować przez nią, dopóki nie napotkasz określonej wartości:


numbers = [1, 2, 3, 4, 5, -1, 6]
i = 0
while i < len(numbers) and numbers[i] != -1:
    print(numbers[i])
    i += 1

Nie różni się to wiele od pętli for, prawda? Ale są przypadki, gdzie nie trzeba używać indeksu, aby pracować z elementami listy. Na przykład w liście przechowywane są pewne zadania, muszą one być podejmowane po jednym z listy, wykonywane i usuwane z listy.

Ten kod schematycznie można by zapisać tak:


tasks = [1, 2, 3, 4, 5, -1, 6]
while len(tasks) > 0:
    task = tasks.pop()
    print(task)
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION