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ą.
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]
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.
Komentarze (0)
Brak komentarzy...