jesteś tutaj�
125
Dane strukturalne
obiekt b
obiekt f
obiekt a
obiekt e
obiekt d
obiekt c
Zbiór
Korzystanie z metod zbioru
Teraz, gdy nasze samogłoski znajdują się już w zbiorze, kolejnym krokiem powinno być określenie,
czy któreś ze znaków tworzących słowo należą do zbioru samogłosek. Moglibyśmy to zrobić,
sprawdzając, czy poszczególne litery, z których składa się dane słowo, znajdują się w tym zbiorze,
jako że operator
in
działa w odniesieniu do zbiorów mniej więcej w ten sam sposób, w jaki robi
to w odniesieniu do słowników i list. Moglibyśmy zatem skorzystać z
in
, aby sprawdzić, czy zbiór
zawiera jakąkolwiek literę, a następnie za pomocą pętli
for
cyklicznie sprawdzać występowanie
poszczególnych liter słowa w zbiorze.
Jednak nie podążajmy tutaj tą ścieżką, ponieważ zastosowanie metod zbioru pomoże nam uniknąć
większości czynności wykonywanych w pętlach, o których była mowa powyżej.
Istnieje bowiem o wiele lepszy sposób wykonywania tego rodzaju operacji za pomocą
zbiorów. Wymaga on użycia metod, w które wyposażony jest każdy zbiór i które umożliwiają
przeprowadzanie działań takich jak suma, różnica i iloczyn zbiorów. Zanim zaczniemy modyfikować
kod programu
vowels7.py, dowiedzmy się, jak działają te metody, eksperymentując w wierszu
poleceń powłoki i zastanawiając się, jak interpreter „widzi” zbiory danych. Postaraj się wykonywać
kolejne kroki na swoim komputerze. Zacznijmy od utworzenia zbioru samogłosek, po czym
przypiszmy wartość do zmiennej
word
.
>>> vowels = set(‘aeiou’)
>>> word = ‘halo’
Interpreter tworzy dwa obiekty: jeden zbiór i jeden łańcuch znakowy. Poniżej zaprezentowano,
jak zbiór
vowels
wygląda w pamięci interpretera.
a
o
u
i
e
vowels
Zbiór zawiera
pięć obiektów
liter.
>>> u = vowels.union(set(word))
Python konwertuje wartość zapisaną
w zmiennej word na zbiór obiektów
liter (usuwając przy tym wszelkie
duplikaty).
Metoda union łączy jeden zbiór
z drugim, a wynik tej operacji jest
następnie przypisywany do zmiennej
o nazwie „u” (która jest kolejnym
zbiorem).
Jak wyglądają zbiory vowels oraz u
po tym wywołaniu metody union?
Przekonajmy się, co się stanie, gdy wykonamy działanie sumy zbiorów na zbiorze
vowels
oraz zbiorze
liter utworzonym z wartości przechowywanej w zmiennej
word
. Drugi z tych zbiorów utworzymy
w locie, przekazując zmienną
word
wywołaniu funkcji
set
, której wynik działania zostanie następnie
przekazany metodzie
union
wywoływanej na rzecz obiektu
vowels
. Wynikiem działania tej ostatniej
będzie kolejny zbiór, który przypiszemy do kolejnej zmiennej (o nazwie
u
). Ta nowa zmienna będzie
zawierała
kombinację obiektów należących do obydwu wyjściowych zbiorów (czyli ich sumę).
126
Rozdział 3.
Zabawa ze zbiorami
Działanie metody union polega na łączeniu zbiorów
Na końcu poprzedniej strony został pokazany przykład użycia metody
union
do
tworzenia nowego zbioru o nazwie
u
, który był kombinacją liter należących do zbioru
vowels
oraz zbioru unikatowych liter tworzących słowo zapisane w zmiennej
word
.
Operacja ta nie miała żadnego wpływu na zbiór
vowels
, który zachował swój stan sprzed
wywołania operacji łączenia zbiorów. Zbiór
u
jest jednak zupełnie nowy, ponieważ
powstał w wyniku działania metody
union
.
Oto co się dokładnie tu stało.
obiekt b
obiekt f
obiekt a
obiekt e
obiekt d
obiekt c
Zbiór
Co się stało z kodem pętli?
Ten pojedynczy wiersz kodu odwala kawał dobrej roboty. Zauważ, że nie kazałeś tu nigdzie interpreterowi
wykonywać instrukcji pętli. Zamiast tego określiłeś tylko,
co chciałeś, aby zostało zrobione, nie zaś jak miało się
to odbyć, a interpreter spełnił Twoje życzenie, tworząc nowy zbiór zawierający obiekty, o które Ci chodziło.
Typowym wymaganiem (gdy utworzyliśmy już sumę zbiorów) jest przekształcenie otrzymanego zbioru
w posortowaną listę. Operacja ta jest bardzo prosta do wykonania dzięki zastosowaniu funkcji
sorted
oraz
list
.
>>> u_list = sorted(list(u))
>>> u_list
[‘a’, ‘e’, ‘h’, ‘i’, ‘l’, ‘o’, ‘u’]
u = vowels.union(set(word))
h
o
l
a
set(word)
Słowo „halo” zostało
przekształcone w zbiór.
(Gdyby w użytym łańcuchu
znakowym powtarzały się
jakieś litery, w wyniku tej
operacji duplikaty zostałyby
usunięte).
a
o
u
i
e
vowels
Zbiór samogłosek
a
o
u
i
e
l
h
Zbiór o nazwie „u”
zawiera wszystkie
unikatowe obiekty należące
do obydwu zbiorów
wyjściowych.
u
Get Python Rusz głową! Wydanie II now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.