
ŹRÓDŁO : http://szgrabowski.kis.p.lodz.pl/Python-podstawy.html
Zbiory.
Zbiór (ang. set) przypomina słownik, tyle że do słowników wrzuca się pary (klucz-wartość), a do zbiorów pojedyńcze elementy. Zbiór jest kolekcją, w której elementy nie mogą się powtarzać, a ich kolejność nie jest ustalona. Innymi słowy, zbiory [1,3,2], [1,2,3], [3,2,1,2,3] są wszystkie identyczne.
zb = set() zb.add(3); zb.add(1); zb.add(3) # można zapodać wiele instrukcji w linii - ze średnikami zb.add(-2) # ale zaleca się pisać każdą instrukcję w osobnej linii for i in zb: print i, print zb[0] # błąd! TypeError: 'set' object does not support indexing
Zbiór można zainicjować listą:
zb = set([4, 1, 2, 10.4])
Dla zbiorów działają relacje: ==, !=, a także >=, <=, którymi sprawdzamy, czy jeden zbiór jest podzbiorem (nadzbiorem) drugiego, np.:
A = set([3, 1, 8]) B = set([1,8]) B <= A # zwraca True
Mamy też równoważne metody issubset, issuperset (wypróbuj).
Oprócz dodawania elementów, można elementy usuwać (metoda discard lub remove; różnią się tylko przy próbie usunięcia elementu, którego nie ma w zbiorze – sprawdź jak!), działa też len. Przynależność do zbioru sprawdzamy za pomocą in, tj.:
3 in A # zwróci True 8 not in B # zwróci False
Dostępne są operacje mnogościowe na zbiorach: suma (metoda union albo operator |, działają tak samo), przekrój (część wspólna) (metoda intersection albo operator &), różnica (metoda difference albo operator -) i różnica symetryczna (metoda symmetric_difference albo operator ^). Przykłady:
C = (A - B).union([-1,2,4]) D = set([7,8]) & B E = A.symmetric_difference(set([1,2,3,5]))
Istnieje też typ frozenset, tj. zbiór niemutowalny.
X = frozenset([5, 1, 2]) X.add(3) # AttributeError: 'frozenset' object has no attribute 'add'
Obiekty typu frozenset, w przeciwieństwie do set, mogą być kluczami w słownikach oraz elementami innych zbiorów. Można też „zamrażać” i „rozmrażać”, np. frozD = frozenset(D).


Offline