Blog JSystems - z miłości do programowania

Zestawy



Zestawy to takie specyficzne zbiory elementów bez powtórzeń. W zestawach żadna wartość nie może się powtórzyć dwa razy. Są użyteczne np. do usuwania duplikatów. Dodatkowo zestawy automatycznie się sortują.


 


Tworzenie zestawów i konwersje z innych typów złożonych


Podobnie jak w listach, krotkach i słownikach, także i tu mamy różne sposoby deklaracji zestawów. Możemy zadeklarować pusty zestaw takimi sposobami:


z={}
z2=set()


Możemy też stworzyć zestaw od razu zapełniając go danymi:


z3={1,3,2,1,5,1}
print(z3)


Pisałem wcześniej że zestawy nie mogą zawierać duplikatów, a tymczasem dodałem kilkukrotnie tę samą wartość "1". Przy takiej deklaracji nie dostaniemy żadnego wyjątku. Po prostu "1" na liście wystąpi tylko raz. W dodatku dane będą posortowane. Sprawdźmy co zobaczymy na konsoli po uruchomieniu powyższego kodu:


{1, 2, 3, 5}


Zwróć uwagę że w przypadku zestawów używamy nawiasów klamrowych. Jak widać 1 wystąpiła tylko raz, w dodatku zestaw jest posortowany rosnąco.


A co w przypadku zestawów elementów złożonych? Sprawdźmy to na przykładzie zestawu krotek:


z4={(1,"A"),(2,"B"),(1,"C"),(1,"A")}
print(z4)


Co zostało wydrukowane na konsoli?


{(1, 'C'), (2, 'B'), (1, 'A')}


Czyli za duplikat zostaną uznane tylko te krotki, które mają identyczną zawartość wszystkich podelementów.


Jeśli na przykład mamy zbiór elementów pod postacią listy lub krotki, a chcielibyśmy pozbyć się z nich duplikatów to jak to zrobić? Możemy do tego celu wykorzystać właśnie zestawy:


lista=[1,2,3,4,3,2,1]
zestaw=set(lista)
lista2=list(zestaw)
print(lista2)


Powyższy kod drukuje  na konsoli taki wynik:


[1, 2, 3, 4]


 


Modyfikowanie zawartości zestawów


Do dodawania i kasowania elementów w zbiorach służą odpowiednio funkcje wbudowane "add" i "remove":


s={1,2,3,4}
s.add(5)
s.remove(1)
print(s)


Powyższy kod na konsoli drukuje:


{2, 3, 4, 5}


Funkcja remove przyjmuje przez parametr wartość która ma zostać usunięta ze zbioru. Wystąpić może tylko raz w zbiorze, więc nie musimy się zastanawiać czy usunięte zostaną wszystkie czy tylko pierwsze wystąpienie wartości :)


Podobnie jak np. w listach istnieje też funkcja clear, która kasuje całą zawartość zestawu.

Przyjdź do nas na szkolenie z języka Python! Mamy szereg szkoleń w ofercie, od podstawowych po aplikacje webowe z użyciem Django, analizę danych, tesowanie, machine learning i wiele innych.
Sprawdź dostępne szkolenia Python
Zapisz się do newslettera aby otrzymywać najnowsze świeżynki pojawiające się na blogu!