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 |