Rozdział 11 · Mnóstwo informacji!
Zestawy
Kolekcja bez duplikatów i pozycji to szybki sposób na usunięcie duplikatów i porównanie zestawów wartości.
Wielu (set) to zbiór figurek
nawiasy, które mają dwie kluczowe różnice względem listy: elementy listy nie są powtarzane, a trafienia to
Według indeksu numerycznego, nie, zbiór nie jest sekwencją pozycyjną.
mnozhestva.py
chisla = {1, 2, 2, 3, 3, 3}
print(chisla) # {1, 2, 3} – powtórzenia zniknęły same z siebie
Po co są zbiory?
Dwa najczęstsze przypadki to szybkie usunięcie powtórzeń z listy i szybkie sprawdzenie, czy w ogóle są wartość kolekcji.
primenenie_mnozhestv.py
spisok_s_povtorami = [1, 2, 2, 3, 1, 4]
unikalnye = set(spisok_s_povtorami)
print(unikalnye) # {1, 2, 3, 4}
chlenstvo_mnozhestva.py
allowed = {"admin", "editor", "viewer"}
role = "editor"
if role in allowed:
print(„Dostęp dozwolony”)
Zbiór nie jest „przypadkowo uporządkowany” — po prostu nie jest pozycyjny
Nie traktuj set jak „losowego lista” nie stanowiska ogólnie to pisanie
my_set[0] nie może (TypeError), a kod nigdy nie powinien polegać na kolejności zbiór pętli.Pusty zbiór — częsta pułapka
pustoe_mnozhestvo.py
print(type({})) # <class 'dict'> — to puste słownik!
print(type(set())) # <class 'set'> to pusta zbiór
{} jest pustym słownik, a nie pustym zbiór
Nawiasy klamrowe bez zawartości Python domyślnie uznaje za puste
dict (§11.17), ponieważ słowniki pojawiły się w języku jako bardziej podstawowy przypadek użycia {}. Aby stworzyć pusty zbiór, musisz wyraźnie napisać set().add, remove, discard, pop, clear
metody_mnozhestv.py
tags = {"python", "beginner"}
tags.add("tutorial")
tags.discard("missing") # bez błędu, nawet jeśli przedmiot nie jest obecny
print(tags)
| Metoda | Jeśli elementu nie ma |
|---|---|
.remove(x) | KeyError |
.discard(x) | nic się nie dzieje, nie ma żadnego błędu |
pop() usuwa element ARBITRARY ze zbioru
W przeciwieństwie do
list.pop()zbiór nie zawiera pojęcia „ostatniego elementu” set.pop() usuwa i zwraca jeden element, ale nie wiadomo wcześniej, który to jest.Operacje na zestawach
operacii_mnozhestv.py
a = {1, 2, 3}
b = {2, 3, 4}
print(a | b) # union: {1, 2, 3, 4}
print(a & b) # przecięcie: {2, 3}
print(a - b) # Różnica: {1}
Pełna algebra zbiorów — w §11.16
To tylko wstęp. Diagramy Venna dla wszystkich czterech operacji, podzbiorów i hashowalności zostaną omówione w następnej sekcji.
Praktyka: Scenografia i ich działanie
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji