88
Rozdział 2.
Wycinki pętli for
Wycinki listy Marvina z bliska
Przyjrzymy się dokładniej każdemu z wycinków wykorzystywanych w ostatnim programie,
ponieważ zastosowany tu sposób używany jest w wielu programach napisanych w języku
Python. Poniżej raz jeszcze został zaprezentowany każdy istotny wiersz kodu programu
wraz z graficzną reprezentacją odbywającej się operacji.
Zanim zaczniemy omawiać te trzy wycinki, zauważ, że program rozpoczyna się
od przypisania łańcucha znakowego do zmiennej (o nazwie
paranoid_android
)
i skonwertowania go na postać listy (o nazwie
letters
).
obiekt
obiekt
obiekt
obiekt
obiekt
Lista
0
1
2
3
4
paranoid_android = ”Marvin, paranoiczny android”
letters = list(paranoid_android)
letters
0
M
1
a
6
,
9
a
5
n
8
p
4
i
7
2
r
3
v
10
r
11
a
14
i
13
o
12
n
15
c
16
z
n
17
-10
y
18
-9
r
23
-4
d
22
-5
n
21
-6
19
-8
a
20
-7
d
26
-1
i
25
-2
o
24
-3
z n y
Przypomnij sobie, że do każdej
pozycji listy możesz się
odwołać za pomocą dodatniej
lub ujemnej wartości indeksu.
Tutaj pokazaliśmy tylko niektóre
ujemne wartości indeksów.
Teraz przypatrzymy się wszystkim wycinkom, z którymi mieliśmy do czynienia w programie
marvin2.py, i zobaczymy, jakie dane są przez nie wyodrębniane. Gdy interpreter napotyka
specyfikację wycinka, wydobywa odpowiednie obiekty z listy
letters
i przekazuje ich kopie
pętli
for
. Oryginalna zawartość tej listy nie zostaje w żaden sposób zmieniona przez te wycinki.
Pierwszy z wycinków wydobywa obiekty od początku listy i kończy to robić na obiekcie
znajdującym się na pozycji 6 (nie uwzględniając go jednak).
for char in letters[:6]:
print('\t', char)
letters[:6]
M
a
n
i
r
v
Drugi wycinek wydobywa obiekty z końca listy
letters
, zaczynając od pozycji –7
i kontynuując do samego końca tej listy.
for char in letters[-7:]:
print('\t'*2, char)
for char in letters[8:19]:
print(‘\t’*3, char)
letters[-7:]
a
n i
o
d
r
d
I wreszcie na koniec, trzeci wycinek wydobywa obiekty ze środka listy — rozpoczyna
od pozycji 8 i obejmuje wszystko do pozycji 19, lecz ją samą pomija.
letters[8:19]
p
a
i
o
r
n
c
a
jesteś tutaj
89
Dane
Listy: odświeżanie tego, co już wiemy
Teraz, gdy przekonałeś się już, jak współpracują ze sobą listy i pętle
for
, przejrzyjmy
szybko to, czego dowiedziałeś się z lektury kilku ostatnich stron.
CELNE SPOSTRZEŻENIA
Listy „rozumieją” notację nawiasów
kwadratowych, dzięki czemu można z niej
korzystać, aby wybierać pojedyncze obiekty
z dowolnej listy.
Podobnie jak w wielu innych językach
programowania, w Pythonie liczenie zaczyna się
od zera, dlatego pierwszy obiekt na dowolnej
liście znajduje się na pozycji o indeksie 0, drugi
— na pozycji o indeksie 1 i tak dalej.
W przeciwieństwie do wielu innych języków
programowania Python umożliwia indeksowanie
listy od każdego jej końca. Korzystając z indeksu –1,
wskazuje się ostatni element listy, używając –2
— przedostatni i tak dalej.
Listy zapewniają również obsługę wycinków (lub
fragmentów), umożliwiając określenie początku,
końca i kroku jako elementów notacji nawiasów
kwadratowych.
Listy mają mnóstwo zastosowań, ale...
Nie stanowią panaceum na wszystkie potrzeby związane ze
strukturami danych. Listy można wykorzystywać w bardzo wielu
miejscach. Lista sprawdzi się wręcz doskonale, gdy będziesz miał
kolekcję podobnych obiektów, które będziesz chciał przechować
w postaci struktury danych.
Jednakże — i być może też dość paradoksalnie listy mogą
okazać się
złym wyborem
, gdy dane, z których będziesz korzystał,
będą miały pewną
strukturę. Problem ten (oraz jego potencjalne
rozwiązania) zaczniemy omawiać już na następnej stronie.
Widzę, że znajdę mnóstwo zastosowań
list w swoich programach napisanych
w Pythonie. Ale czy jest coś, w czym listy
nie sprawdzają się tak dobrze?
P
: Z pewnością na tym nie kończy się wiedza na temat list?
O
:
Masz rację, to jeszcze nie wszystko na ich temat.
Traktuj materiał przedstawiony w tym rozdziale jako
szybkie wprowadzenie do wbudowanych struktur danych
Pythona oraz tego, co można za ich pomocą osiągnąć.
Na pewno nie udało nam się wyczerpać zagadnienia list
i będziemy jeszcze do nich dość często wracać w pozostałej
części niniejszej książki.
P
: A co z sortowaniem list? Czy nie jest to istotna kwestia?
O
:
Tak, jest, ale nie zaprzątajmy sobie głowy sprawami
tego rodzaju do czasu, gdy będzie nam to rzeczywiście
potrzebne. Teraz masz już całkiem niezłe pojęcie
o podstawach, i to wszystko, co jest Ci niezbędne na tym
etapie. I nie martw się na zapas, bo wkrótce zajmiemy się
również kwestią sortowania.
głupie pytania
Nie istnieją

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.