Twoje Centrum Szkoleniowe

Nauczmy się dziś czegoś nowego!

Kurs programowania - Python

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ę
Aby widzieć ocenę lekcji - Zaloguj się