PYTHON Zbiory | Operacje na zbiorach
Zbiory w Pythonie nie są jedynie prostym kontenerem na unikatowe elementy. Są również niezwykle potężnym narzędziem do wykonywania szerokiej gamy operacji matematycznych i logicznych, znanych z teorii mnogości. W tej lekcji zanurzymy się w różne operacje, które można wykonać na zbiorach, od sumy przez część wspólną, różnice, aż do sprawdzania podzbiorów i superzbiorów.
Omówimy nie tylko, jak te operacje są wykonywane, ale również, w jaki sposób można je wykorzystać w praktycznych scenariuszach. Czy wiesz na przykład, jak znaleźć unikatowe elementy w dwóch listach albo jak szybko sprawdzić, czy jedna lista jest podzbiorem innej? Po tej lekcji będziesz mógł to zrobić w sposób efektywny i elegancki.
Wprowadzimy również kilka bardziej zaawansowanych metod, które pozwalają na manipulację zbiorami, takimi jak update
, intersection_update
, czy difference_update
. Te metody są nie tylko szybkim sposobem na modyfikację istniejących zbiorów, ale również doskonałą ilustracją tego, jak operacje na zbiorach są powiązane z operacjami na listach i innymi strukturami danych.
Jeżeli teoria mnogości i operacje na zbiorach brzmią dla Ciebie jak abstrakcyjne koncepcje matematyczne, ta lekcja pokaże Ci, jak są one bezpośrednio zastosowane w programowaniu i analizie danych. Bez względu na to, czy jesteś początkującym programistą, czy doświadczonym analitykiem danych, znajdziesz tu coś, co znacząco poszerzy Twoje umiejętności.
Suma zbiorów
A = {0, 1, 2, 3}
B = {2, 3, 4, 5}
print("Suma:", A | B)
Sumą zbiorów jest logiczne lub (or). Uzyskamy go dzięki operatorowi |.
Wynikiem będą wszystkie elementy obu zbiorów, oczywiście bez powtórzeń:
Suma: {0, 1, 2, 3, 4, 5}
To samo działanie ma metoda:
print("Suma:",A.union(B))
Część wspólna, iloczyn zbiorów
Część wspólną zbiorów uzyskamy mnożąc je logicznie przez siebie, czyli wykonując operację AND: &.
A = {0, 1, 2, 3}
B = {2, 3, 4, 5}
print("Część wspólna:", A & B)
Wynikiem będą elementy należące zarówno do jednego, jak i do drugiego zbioru:
Część wspólna: {2, 3}
To samo działanie ma metoda:
print("Część wspólna:",A.intersection(B))
Różnice zbiorów
Różnicą zbiorów możemy sprawdzić jakie elementy należą do zbioru A, a nie należą do zbioru B, odwrotnie, czyli należą do zbioru B, a nie należą do zbioru A lub za pomocą różnicy symetrycznej elementy, które nie należą do części wspólnej zbiorów A i B.
Przykład:
A = {0, 1, 2, 3}
B = {2, 3, 4, 5}
print("Różnica A-B:", A - B)
print("Różnica B-A:", B - A)
print("Różnica symetryczna:", A ^ B)
Efekt:
Różnica A-B: {0, 1}
Różnica B-A: {4, 5}
Różnica symetryczna: {0, 1, 4, 5}
I tak:
- pierwsza linia: elementy, które należą do zbioru A, ale nie należą do zbioru B
- druga linia: elementy, które należą do zbioru B, ale nie należą do zbioru A
- trzecia linia: elementy nie będące częścią wspólną zbiorów A i B
To samo działanie mają metody:
print("Różnica A-B:", A.difference(B))
print("Różnica B-A:", B.difference(A))
print("Różnica symetryczna:", A.symmetric_difference(B))
Podzbiory
Sprawdzenie czy zbiór B jest podzbiorem zbioru A, czyli czy wszystkie elementy zbioru B znajdują się w zbiorze A:
A = {0, 1, 2, 3}
B = {1, 2}
print("Czy zbiór B jest podzbiorem zbioru A:", B.issubset(A))
Wartość True, tak, zbiór B jest podzbiorem zbioru A. Wszystkie elementy zbioru B {1,2} znajdują się w zbiorze A.
Ekwiwalent <=.
Sprawdzenie czy zbiór B jest superzbiorem zbioru A. Czyli czy zawiera wszystkie elementy zbioru A.
A = {0, 1, 2, 3}
B = {0, 1, 2, 3, 4}
print("Czy zbiór B jest podzbiorem zbioru A:", B.issuperset(A))
Efekt: True. Zbiór B zawiera wszystkie elementy zbioru A. Ekwiwalent >=.
Inne metody do wykonania na zbiorach:
- A.update(B) – aktualizuje zbiór A, dodając do niego elementy ze zbioru B.
A = {1, 2, 3}
B = {3, 4, 5}
A.update(B)
print(A) # Wynik: {1, 2, 3, 4, 5}
- A.intersection_update(B) – modyfikuje zbiór A, pozostawiając tylko elementy, które są również w zbiorze B.
A = {1, 2, 3}
B = {3, 4, 5}
A.intersection_update(B)
print(A) # Wynik: {3}
- A.difference_update(B) – usuwa ze zbioru A wszystkie elementy, które występują w zbiorze B.
A = {1, 2, 3}
B = {3, 4, 5}
A.difference_update(B)
print(A) # Wynik: {1, 2}
- A.symmetric_difference_update(B) – aktualizuje zbiór A, zostawiając tylko elementy, które są unikatowe dla A i B.
A = {1, 2, 3}
B = {3, 4, 5}
A.symmetric_difference_update(B)
print(A) # Wynik: {1, 2, 4, 5}
- A.discard(x) – usuwa element x ze zbioru A, jeśli istnieje.
A = {1, 2, 3, 4}
A.discard(3)
print(A) # Wynik: {1, 2, 4}
- A.pop() – usuwa i zwraca losowy element ze zbioru A
A = {1, 2, 3}
print(A.pop()) # Usuwa i wypisuje jeden z elementów zbioru
print(A) # Wypisuje zbiór po usunięciu elementu
- A.clear() – usuwa wszystkie elementy ze zbioru A.
A = {1, 2, 3}
A.clear()
print(A) # Wynik: set()
Testy przypięte do lekcji | |
---|---|
Aby uzyskać dostęp do testów i ćwiczeń interaktywnych - Zaloguj się |