7.1 Pętla for
Użycie pętli do iteracji przez elementy zbioru jest częstym zadaniem w programowaniu, szczególnie gdy chcesz przetworzyć każdy element zbioru.
Do iteracji przez elementy zbioru w Pythonie zwykle używana jest pętla for
. Ponieważ zbiory nie mają ustalonej kolejności elementów, pętla for idealnie nadaje się do przechodzenia przez elementy zbioru (bo wykorzystuje mechanizm iteratorów).
Przykład:
my_set = {1, 2, 3, 4, 5}
for element in my_set:
print(element)
Wydaje się proste – przejdźmy do kilku praktycznych przykładów:
Sumowanie elementów zbioru
Zobaczmy przykład, w którym sumujemy wszystkie elementy zbioru.
my_set = {1, 2, 3, 4, 5}
total = 0
for element in my_set:
total += element
print("Suma elementów zbioru:", total)
Wynik:
Suma elementów zbioru: 15
W tym przykładzie używamy pętli for
, aby kolejno dodać każdy element zbioru my_set
do zmiennej total
, co daje sumę wszystkich elementów zbioru.
Wyszukiwanie maksymalnego elementu
A teraz znajdźmy maksymalny element w zbiorze.
my_set = {1, 2, 3, 4, 5}
max_element = None
for element in my_set:
if max_element is None or element > max_element:
max_element = element
print("Maksymalny element zbioru:", max_element)
Wynik:
Maksymalny element zbioru: 5
W tym przykładzie pętla for
jest używana do przechodzenia przez wszystkie elementy zbioru i ustalania maksymalnej wartości.
Filtrowanie elementów
Stwórzmy nowy zbiór, zawierający tylko liczby parzyste z pierwotnego zbioru.
my_set = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
even_set = set()
for element in my_set:
if element % 2 == 0:
even_set.add(element)
print("Zbiór liczb parzystych:", even_set)
Zbiór liczb parzystych: {2, 4, 6, 8, 10}
W tym przykładzie pętla for
jest używana do filtrowania elementów spełniających dane kryterium (parzystość) i dodawania ich do nowego zbioru even_set
.
7.2 Użycie enumerate()
Funkcja enumerate()
zwraca iterator, który generuje krotki, składające się z indeksu i odpowiadającego mu elementu z obiektu iterowalnego.
Podczas pracy ze zbiorami, użycie enumerate()
może być przydatne do uzyskiwania indeksów elementów podczas iteracji. Jednak ponieważ zbiory są nieuporządkowanymi kolekcjami, kolejność elementów podczas każdej iteracji nie jest gwarantowana.
Funkcja enumerate()
działa ze zbiorami tak samo, jak z każdym innym obiektem iterowalnym.
Iteracja z indeksami
Użycie enumerate()
do uzyskiwania indeksów elementów zbioru podczas iteracji.
my_set = {10, 20, 30, 40, 50}
for index, element in enumerate(my_set):
print(f"Indeks: {index}, Element: {element}")
Przykładowy wynik:
Indeks: 0, Element: 40
Indeks: 1, Element: 10
Indeks: 2, Element: 50
Indeks: 3, Element: 20
Indeks: 4, Element: 30
Zapisywanie indeksów i elementów na liście
Zobaczmy przykład, w którym zapisujemy indeksy i elementy zbioru na liście do dalszego przetwarzania.
my_set = {"apple", "banana", "cherry"}
indexed_elements = [(index, element) for index, element in enumerate(my_set)]
print(indexed_elements)
Przykładowy wynik:
[(0, 'banana'), (1, 'cherry'), (2, 'apple')]
Przetwarzanie elementów za pomocą ich indeksów
Zobaczmy przykład, w którym wykonujemy określoną operację na elementach zbioru, wykorzystując ich indeksy.
my_set = {1, 2, 3, 4, 5}
squared_elements = {}
for index, element in enumerate(my_set):
squared_elements[index] = element ** 2
print(squared_elements)
Przykładowy wynik:
{0: 16, 1: 1, 2: 25, 3: 4, 4: 9}
7.3 Użycie pętli while
W zasadzie przy pracy ze zbiorami można używać również pętli while
. Na przykład, można pojedynczo pobierać zadania (elementy) ze zbioru, aż będzie pusty:
my_set = {"posprzątać dom", "umyć naczynia", "kupić chleb"}
while len(my_set) > 0:
task = my_set.pop()
print(task)
Taki sposób zadziała. Generalnie masz wiele sposobów pracy ze zbiorem elementów — wybierz dowolny, który najbardziej Ci odpowiada.
GO TO FULL VERSION