Typ - set()
Set jest zmienną, która pozwala przechowywać wiele obiektów.
- set’y są nieuporządkowane (unordered). Kolejność obiektów w secie może być różna, przez co wartości nie są indeksowane.
- set’y są obiektami mutowalnymi (Mutable). Oznacza to, że pozwalają zmieniać swoją zawartość. Do istniejącego set’a możemy dodawać obiekty oraz możemy je usuwać. Obiektów już znajdujących się w secie nie jesteśmy w stanie zmodyfikować, lecz możemy to obejść poprzez usunięcie i dodanie nowego obiektu.
- set’y nie pozwalają przechowywać obiektów o powtarzających się wartościach.
- set’y pozwalają przechowywać jedynie obiekty hashowalne (hashable), to jest int, float, bool, str, tuple, None.
Deklaracja set’a bez wartości:
set1 = set()
Deklaracja set’a z watościami:
set1 = {1, 2, 3} set2 = {1.2, 3.4, 5.6} set3 = {True, False, True} set4 = {'one', 'two', 'three'} set5 = {1, 1.2, 'three', True} set6 = set({1, 1.2, 'three', True})
Set’y przechodują jedynie unikalne wartości:
set1 = {1, 1, 3} print(set1) # wynik --> {1, 3} set1 = {1.1, 1.1, 3.3} print(set1) # wynik --> {1.1, 3.3} set1 = {True, False, True} print(set1) # wynik --> {False, True} set1 = {'one', 'one', 'three'} print(set1) # wynik --> {'three', 'one'}
Set’y przechodują jedynie hashowalne obiekty:
set1 = {1, 2, 3} print(set1) # wynik --> {1, 2, 3} set1 = {1.1, 2.2, 3.3} print(set1) # wynik --> {1.1, 2.2, 3.3} set1 = {True, False} print(set1) # wynik --> {False, True} set1 = {'one', 'two', 'three'} print(set1) # wynik --> {'two', 'three', 'one'} set1 = {(1, 2, 3), (5, 6, 7), (-1, -2, -3)} print(set1) # wynik --> {(5, 6, 7), (1, 2, 3), (-1, -2, -3)} set1 = {None} print(set1) # wynik --> {None} set1 = {[1, 2, 3], [5, 6, 7], [-1, -2, -3]} print(set1) # wynik --> TypeError: unhashable type: 'list' set1 = {{1, 2, 3}, {5, 6, 7}, {-1, -2, -3}} print(set1) # wynik --> TypeError: unhashable type: 'set' set1 = {{1:'a', 2:'b', 3:'c'}, {5:'d', 6:'e', 7:'f'}, {-1:'g', -2:'h', -3:'i'}} print(set1) # wynik --> TypeError: unhashable type: 'dict'
Typ zmiennej obiektu set:
set1 = set() print(type(set1)) # wynik --> <class 'set'>