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  AiB | 
|  A | = B  A.update (B)  |  Dodaje wszystkie elementy tablicy  Bdo zbioruA | 
|  A i B  Sekcja specjalna (B)  |  Zwraca zestaw będący przecięciem zbiorów  AiB | 
|  A & = B  A.intersection_update (B)  |  Liście w zbiorze  Atylko przedmioty należące do zbioruB | 
|  A - B  A.difference (B)  |  Zwraca ustawioną różnicę  AiB(elementy zawarte wA, ale nieuwzględnione wB). | 
|  A - = B  A.difference_update (B)  |  Usuwa wszystkie elementy  Bz zestawuA | 
|  A ^ B  A.symmetric_difference (B)  |  Zwraca symetryczną różnicę zbiorów  AiB(elementy należące doAlubB, ale nie do obu zbiorów jednocześnie). | 
|  A ^ = B  A.symmetric_difference_update (B)  |  Zapisuje w  Asymetryczną różnicę zbiorówAiB | 
|  A <= B  A.issubset (B)  |  Zwraca wartość  truejeśliAjest podzbioremB | 
|  A> = B  A.issuperset (B)  |  Zwraca wartość  truejeśliBjest podzbioremA | 
|  A <B  |  Odpowiednik  A <= B and A != B | 
|  A> B  |  Odpowiednik  A >= B and A != B |