Zbiory
Zbiór (ang. set) to tablica, w których nie ma dwóch lub więcej identycznych elementów. Powiedzmy, że chcesz dostać zbiór wszystkich słów użytych w danym zdaniu:
print set("jego imie to Eryk i Eryk jest jego imieniem".split())
W oknie interpretera pojawi się tablica zawierająca "jego", "imie", "to", "Eryk", "i" "jest", i na końcu "imieniem". Wszystkie słowa, które były użyte w zdaniu dwa lub więcej razy, pojawiają się w zbiorze tylko raz.
Python umożliwia wykonywanie podstawowych działań na zbiorach. Jako przykład rozważmy dwa zbiory, w których zapisano imion A i B
A = set(["Jake", "John", "Eric"])
B = set(["John", "Jill"])
Aby dowiedzieć się, które osoby brały udział w obu wydarzeniach, użyj metody intersection
(część wspólna):
print A.intersection(B) # set(['John'])
print B.intersection(A) # set(['John'])
Aby ustalić, którzy brali udział tylko w jednym z wydarzeń, użyj metody symmetric_difference
(różnica symetryczna):
print A.symmetric_difference(B) # set(['Jill', 'Jake', 'Eric'])
print B.symmetric_difference(A) # set(['Jill', 'Jake', 'Eric'])
Wyodrębnieniu osób, które brały udział w A i nie brały w B, służy różnica zbiorów difference
:
print A.difference(B) # set(['Jake', 'Eric']
print B.difference(A) # set(['Jill'])
Z kolei union
(suma zbiorów) da nam listę wszyskich osób:
print A.union(B) # set(['Jill', 'Jake', 'John', 'Eric'])
Ćwiczenie
W ćwiczeniu poniżej utwórz zbiory A, B, C z odpowiednich tablic i wypisz następujące zbiory imion:
-
Imiona, które są w przynajmniej w jednym ze zbiorów A, B i C (czyli zwykła suma);
-
Imiona, które są jednocześnie w zbiorach A, B i C;
-
Imiona, które są albo w zbiorze A, albo w sumie zbiorów B i C.