Lesson 10
Zestawy
1. Co to jest zestaw
Ustawiona w Pythonie struktura danych odpowiada zestawom w matematyce. Może składać się z różnych elementów; kolejność elementów w zbiorze jest niezdefiniowana. Można dodawać i usuwać elementy zestawu, można iterować elementy zestawu, można wykonywać standardowe operacje na zestawach (połączenie, przecięcie, różnica). Poza tym możesz sprawdzić, czy element należy do zestawu.
W przeciwieństwie do tablic, gdzie elementy są przechowywane jako uporządkowana lista, kolejność elementów w zbiorze jest niezdefiniowana (ponadto elementy zestawu zwykle nie są przechowywane w kolejności pojawiania się w zbiorze, co pozwala na sprawdzenie, czy element należy do zestawu szybciej niż przechodzenie przez wszystkie elementy zestawu).
Dowolny niezmienny typ danych może być elementem zestawu: liczbą, łańcuchem, krotką. Zmienne (zmienne) typy danych nie mogą być elementami zestawu. W szczególności lista nie może być elementem zestawu (ale krotką), a inny zestaw nie może być elementem zestawu. Wymóg niezmienności wynika ze sposobu, w jaki komputery reprezentują zbiory w pamięci.
2. Jak zdefiniować zestaw
Możesz zdefiniować zestaw tak prosty, jak nazywając wszystkie jego elementy w nawiasach. Jedynym wyjątkiem jest zestaw pusty , który można utworzyć za pomocą funkcji set()
. Jeśli set(..)
ma listę, łańcuch lub krotkę jako parametr, zwróci zestaw złożony z jego elementów. Na przykład,
A = {1, 2, 3} A = set('qwerty') print(A)
wydrukuje {'e', 'q', 'r', 't', 'w', 'y'}
jako wynik.
Kolejność elementów jest nieważna. Na przykład program
A = {1, 2, 3} B = {3, 2, 3, 1} print(A == B)
wypisze True
, ponieważ A
i B
są równymi zestawami.
Każdy element może wejść do zestawu tylko raz. set('Hello')
zwraca zestaw czterech elementów: {'H', 'e', 'l', 'o'}
.
3. Operacje z elementami
Możesz uzyskać liczbę elementów w zestawie za pomocą funkcji len
.
Możesz także iterować po wszystkich elementach zestawu (w niezdefiniowanej kolejności!) Używając pętli for
:
primes = {2, 3, 5, 7, 11} for num in primes: print(num)
Możesz sprawdzić, czy element należy do zestawu za pomocą słowa kluczowego in
: wyrażenia takie jak a in A
zwracają wartość typu bool
. Podobnie jest przeciwieństwem operacja not in
. Aby dodać element do zestawu, należy add
metodę:
A = {1, 2, 3} print(1 in A, 4 not in A) A.add(4)
Istnieją dwie metody usuwania elementu z zestawu: discard
i remove
. Ich zachowanie zmienia się tylko w przypadku, gdy usunięty element nie był w zestawie. W takim przypadku metoda discard
nic nie robi, a metoda remove
KeyError
wyjątek KeyError
.
Na koniec, pop
usuwa jeden losowy element z zestawu i zwraca jego wartość. Jeśli zestaw jest pusty, pop
generuje wyjątek KeyError
.
Możesz przekształcić zestaw do listy używając list
funkcji.
4. Operacje na zestawach
Oto jak wykonać dobrze znane operacje na zestawach w Pythonie:
A | b A.union (B) | Zwraca zestaw będący połączeniem zbiorów A i B |
A | = B A.update (B) | Dodaje wszystkie elementy tablicy B do zbioru A |
A i B Sekcja specjalna (B) | Zwraca zestaw będący przecięciem zbiorów A i B |
A & = B A.intersection_update (B) | Liście w zbiorze A tylko przedmioty należące do zbioru B |
A - B A.difference (B) | Zwraca ustawioną różnicę A i B (elementy zawarte w A , ale nieuwzględnione w B ). |
A - = B A.difference_update (B) | Usuwa wszystkie elementy B z zestawu A |
A ^ B A.symmetric_difference (B) | Zwraca symetryczną różnicę zbiorów A i B (elementy należące do A lub B , ale nie do obu zbiorów jednocześnie). |
A ^ = B A.symmetric_difference_update (B) | Zapisuje w A symetryczną różnicę zbiorów A i B |
A <= B A.issubset (B) | Zwraca wartość true jeśli A jest podzbiorem B |
A> = B A.issuperset (B) | Zwraca wartość true jeśli B jest podzbiorem A |
A <B | Odpowiednik A <= B and A != B |
A> B | Odpowiednik A >= B and A != B |