Zestawy Pythona: operacje, metody i teoria mnogości

Zestawy główne w Pythonie. Naucz się przechowywać unikalne wartości, wykonywać przecięcia, sumy, różnice i rozumieć korzyści wydajnościowe wynikające z mieszania.

Spróbuj w Edytorze

Przegląd

Zestaw to nieuporządkowana kolekcja unikalnych elementów w Pythonie. Zestawy są zbudowane na tablicach skrótów, co czyni je wysoce zoptymalizowanymi pod kątem testowania członkostwa — określania, czy określony element znajduje się w kolekcji. O ile sprawdzenie, czy dana pozycja znajduje się na liście, wymaga przeskanowania każdej pozycji (operacja `O(N)`, o tyle sprawdzenie przynależności do zbioru przebiega w stałym czasie `O(1)`. To sprawia, że ​​zestawy są niezwykle wydajne w zakresie eliminacji duplikatów i masowego filtrowania danych.

Zbiory inicjowane są za pomocą nawiasów klamrowych `{}` zawierających wartości (bez dwukropków) lub za pomocą wbudowanego konstruktora `set()`. Należy zauważyć, że ponieważ nawiasy klamrowe są również używane w słownikach, wpisanie pustych nawiasów klamrowych `{}` inicjuje pusty słownik. Aby zainicjować pusty zestaw, musisz użyć `set()`. Elementy wewnątrz zestawu muszą umożliwiać mieszanie i być niezmienne, co oznacza, że ​​można przechowywać liczby, ciągi znaków i krotki, ale nie można przechowywać w zestawie list ani słowników.

Poza podstawowymi metodami dodawania i usuwania zestawy Pythona natywnie obsługują operacje z matematycznej teorii mnogości. Obejmuje to sumę (`|` lub `.union()`) do łączenia kolekcji, przecięcie (`&` lub `.intersection()`) do znajdowania wspólnych elementów, różnicę (`-` lub `.difference()`) do znajdowania elementów unikalnych dla jednej kolekcji oraz różnicę symetryczną (`^`) do pobierania elementów z dowolnego zestawu, ale nie obu. Zestawy masteringowe umożliwiają rozwiązywanie złożonych problemów z grupowaniem za pomocą czystego, wydajnego i czytelnego kodu.

Dane wyjściowe kodu i wykonania

Usuwanie duplikatów z listy i wykonywanie operacji na zbiorach matematycznych.

# Removing duplicates
roles_list = ["admin", "user", "editor", "admin", "user"]
# Sort the set to guarantee deterministic printed output
unique_roles = sorted(list(set(roles_list)))
print(f"Unique roles: {unique_roles}")

# Set operations
dev_skills = {"python", "javascript", "sql"}
ops_skills = {"sql", "docker", "kubernetes"}

# Union and Intersection (sorted for deterministic output)
all_skills = sorted(list(dev_skills | ops_skills))
common_skills = sorted(list(dev_skills & ops_skills))
unique_to_dev = sorted(list(dev_skills - ops_skills))

print(f"Union: {all_skills}")
print(f"Intersection: {common_skills}")
print(f"Dev only: {unique_to_dev}")
Wyjście terminala
Unique roles: ['admin', 'editor', 'user']
Union: ['docker', 'javascript', 'kubernetes', 'python', 'sql']
Intersection: ['sql']
Dev only: ['javascript', 'python']

Wdrażanie krok po kroku

  • Usuwanie zduplikowanych wpisów z wyników API lub plików CSV
  • Określanie wspólnych elementów pomiędzy dwiema bazami danych
  • Wykonywanie szybkich operacji wyszukiwania na dużych listach identyfikatorów

Często zadawane pytania

Czy elementy w zestawie są uporządkowane?

Nie, zestawy są nieuporządkowane. Nie można uzyskać dostępu do elementów za pomocą indeksu (jak set[0]) ani ich pokroić.

Jak dodać lub usunąć elementy w zestawie?

Użyj metody .add(), aby wstawić pojedynczy element, oraz metody .remove() lub .discard(), aby go usunąć. .discard() jest bezpieczniejsza, ponieważ nie generuje błędu w przypadku braku elementu.

Powiązane tematy

Polecane zasoby Pythona

Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.