>_

LMK

Zbiory (Sets) w Pythonie: Magia Unikalnych Kolekcji! 🎲

python zbiory sets set operacje dla początkujących

Asystent Głosowy 🎧

Zbiory (Sets) w Pythonie: Magia Unikalnych Kolekcji! 🎲

Witaj w finale naszej serii o podstawowych strukturach danych w Pythonie! Poznaliśmy już elastyczne listy 🎒, niezmienne krotki 💎 i sprytne słowniki 📇. Czas na ostatniego, ale niezwykle ciekawego członka tej rodziny – zbiory (ang. sets).

Wyobraź sobie zbiór jako magiczny worek, który ma jedną, prostą zasadę: żadnych duplikatów! Niezależnie od tego, ile razy spróbujesz wrzucić do niego ten sam element, on zawsze będzie tam występował tylko raz. Drugą ważną cechą jest to, że dla zbioru kolejność nie ma znaczenia. To po prostu kolekcja unikalnych skarbów.

Tworzenie Zbioru: Worek bez Duplikatów

Zbiór możemy stworzyć na dwa sposoby: używając nawiasów klamrowych {} (tak jak w słownikach, ale bez par klucz-wartość) lub za pomocą funkcji set().

Zobaczmy w akcji jego magiczną właściwość usuwania duplikatów:

python
# Próbujemy stworzyć zbiór z powtarzającymi się liczbami
liczby = {1, 2, 3, 2, 1, 4, 5, 3}

# Zobacz, co się stanie!
print(liczby) # Wyświetli: {1, 2, 3, 4, 5}

# Możemy też stworzyć zbiór z listy (to świetny sposób na usunięcie z niej duplikatów!)
lista_z_duplikatami = ["a", "b", "c", "a", "d"]
unikalne_litery = set(lista_z_duplikatami)
print(unikalne_litery) # Wyświetli: {'a', 'c', 'b', 'd'} (kolejność nie jest gwarantowana!)

Matematyczna Magia: Operacje na Zbiorach 🧙

Prawdziwa moc zbiorów ujawnia się, gdy zaczynamy na nich wykonywać operacje znane z matematyki. To niezwykle potężne do filtrowania i łączenia danych!

Wyobraźmy sobie, że mamy dwa zbiory składników do magicznych mikstur:

python
zbior1 = {"oko traszki", "pazur smoka", "pióro feniksa"}
zbior2 = {"korzeń mandragory", "pióro feniksa", "łza jednorożca"}
  • Suma |: Łączy zbiory, tworząc nowy zbiór ze wszystkich unikalnych elementów z obu. zbior1 | zbior2
    • Wynik: {"oko traszki", "pazur smoka", "pióro feniksa", "korzeń mandragory", "łza jednorożca"}
  • Przecięcie &: Zwraca tylko te elementy, które występują w obu zbiorach. zbior1 & zbior2
    • Wynik: {"pióro feniksa"}
  • Różnica -: Zwraca elementy, które są w pierwszym zbiorze, ale nie ma ich w drugim. zbior1 - zbior2
    • Wynik: {"oko traszki", "pazur smoka"}
  • Różnica symetryczna ^: Zwraca wszystkie elementy, które nie są wspólne dla obu zbiorów. zbior1 ^ zbior2
    • Wynik: {"oko traszki", "pazur smoka", "korzeń mandragory", "łza jednorożca"}

Modyfikowanie Zbioru: Dodaj i Usuń

Zbiory są mutowalne, więc możemy do nich dodawać i usuwać elementy.

  • add(element): Dodaje nowy element. Jeśli element już istnieje, nic się nie stanie.
  • 🗑️ remove(element): Usuwa element. Uwaga: jeśli elementu nie ma w zbiorze, Python zgłosi błąd!
  • 🤫 discard(element): Bezpieczniejsze usuwanie. Działa jak remove, ale nie generuje błędu, jeśli elementu nie ma.
  • 🧹 clear(): Czyści cały zbiór, zostawiając go pustym.
python
owoce = {"jabłko", "banan", "pomarańcza"}

owoce.add("gruszka")
# owoce to teraz: {"jabłko", "banan", "pomarańcza", "gruszka"}

owoce.add("jabłko") # Nic się nie zmieni, duplikaty są ignorowane

owoce.remove("banan")
# owoce to teraz: {"jabłko", "pomarańcza", "gruszka"}

owoce.discard("winogrona") # Nic się nie stanie, błędu nie ma

owoce.clear()
# owoce to teraz: set()

Podsumowanie

Zbiory to Twoje narzędzie do pracy z unikalnymi elementami. Ich dwie największe supermoce to:

  1. Błyskawiczne usuwanie duplikatów z list: unikalne = list(set(twoja_lista)) to jedna z najczęstszych sztuczek w Pythonie.
  2. Niezwykle szybkie sprawdzanie przynależności: Sprawdzenie if element in moj_zbior: jest znacznie szybsze niż w przypadku list, zwłaszcza przy dużych kolekcjach.

Gratulacje! Poznałeś właśnie cztery fundamentalne struktury danych w Pythonie: listy, krotki, słowniki i zbiory. Każda z nich ma swoje unikalne zastosowania i razem tworzą potężny zestaw narzędzi do zarządzania danymi w Twoich programach.