Blog JSystems - uwalniamy wiedzę!

Szukaj

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.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...