86
Rozdział 2.
Pętla for uwielbia listy
Pętla for w języku Python „rozumie” listy
Pythonowa pętla
for
„wie” wszystko o listach i — gdy dostarczy jej się dowolną
listę — „wie” też, gdzie zacząć jej przetwarzanie, ile obiektów zawiera i gdzie
znajduje się jej koniec. Nigdy nie musisz podawać pętli
for
którejkolwiek z tych
informacji, ponieważ jest ona w stanie sama je uzyskać.
Pomoże nam to zilustrować pewien przykład. Wykonaj go wraz z nami —
otwórz nowe okno edycji środowiska IDLE i wpisz kod przedstawiony poniżej.
Zapisz ten nowy program jako plik
marvin.py, po czym naciśnij klawisz F5, aby
wziąć go w obroty.
Uruchom ten
niewielki program...
...aby wygenerować
te dane wyjściowe.
Każdy znak z listy letters został wyświetlony
w osobnym wierszu i poprzedzony znakiem
tabulacji (za ten ostatni odpowiada w kodzie
łańcuch \t).
Jak działa kod programu marvin.py?
Pierwsze dwa wiersze kodu programu marvin.py powinny wydawać Ci się znajome.
Odbywa się tu przypisanie łańcucha znakowego do zmiennej (o nazwie
paranoid_
android
), a następnie przekształcenie go w listę obiektów znakowych (przypisaną do
nowej zmiennej o nazwie
letters
).
Chcemy jednak, żebyś się skoncentrował na kolejnej instrukcji, czyli pętli
for
.
W każdej iteracji pętli
for
wybierany jest kolejny obiekt należący do listy
letters
,
a następnie jest on przypisywany do innej zmiennej (o nazwie
char
). We wciętym ciele
pętli
for
zmienna ta zawiera bieżącą wartość obiektu, który jest przetwarzany przez
tę pętlę. Zauważ, że pętla ta „wie”, gdzie
rozpocząć iterowanie, kiedy je zakończyć, jak
również
ile obiektów znajduje się na liście
letters
. Nie musisz się przejmować żadną
z tych informacji, ponieważ jest to zadanie interpretera.
for char in letters:
print('\t', char)
To jest lista, po której
odbywa się iteracja.
W każdej iteracji
zmienna ta
odwołuje się
do bieżącego
obiektu.
Ten blok kodu jest wykonywany
w każdej iteracji.
obiekt
obiekt
obiekt
obiekt
obiekt
Lista
0
1
2
3
4
jesteś tutaj�
87
Dane
Pętla for w języku Python „rozumie” wycinki
Gdy używasz notacji nawiasów kwadratowych do wybrania wycinka z listy, pętla
for
„robi co trzeba”,
iterując tylko po wyciętych obiektach. Pokaże Ci to w akcji nieco zaktualizowana wersja naszego
najnowszego programu. Zapisz kopię pliku
marvin.py pod nazwą marvin2.py, po czym zmodyfikuj kod
w taki sposób, aby wyglądał tak, jak przedstawiony poniżej.
Interesujący jest sposób, w jaki skorzystaliśmy tu z zapewnianego przez język Python
operatora
mnożenia
(
*
), który używany jest do kontrolowania liczby znaków tabulacji wyświetlanych przed
każdym obiektem w drugiej i trzeciej pętli
for
. Zastosowaliśmy tutaj operator
*
, aby „pomnożyć”
liczbę wystąpień tego znaku, tak jak zostało to pokazane poniżej.
obiekt
obiekt
obiekt
obiekt
obiekt
Lista
0
1
2
3
4
Pierwsza pętla iteruje
po wycinku obejmującym
sześć pierwszych
obiektów na liście.
Druga pętla iteruje po wycinku
obejmującym siedem ostatnich
obiektów na liście. Zauważ, że
zastosowanie konstrukcji *2
spowodowało wstawienie dwóch
znaków tabulacji przed każdym
z wyświetlanych tu obiektów.
Trzecia (i ostatnia) pętla iteruje po
wycinku obejmującym kilka obiektów
znajdujących się w środku listy,
wybierając znaki, które tworzą słowo
„paranoiczny”. Zauważ, że zastosowanie
konstrukcji *3 spowodowało wstawienie
trzech znaków tabulacji przed każdym
z wyświetlanych tu obiektów.
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.