...
Joskus
...
ohjelmassa
...
saatetaan
...
tarvitaan
...
kokoelmaa,
...
joka
...
sisältää
...
alkioita
...
jonkin
...
yksinkertaisen
...
kaavan
...
mukaan
...
(esim.
...
kokonaislukujen
...
neliöitä).
...
Tällöin
...
voitaisiin
...
alustaa
...
muuttuja
...
tyhjällä
...
kokoelmalla
...
ja
...
käyttää
...
toistorakennetta,
...
joka
...
syöttää
...
kokoelmaan
...
arvoja.
...
Tässä
...
esimerkki,
...
jossa
...
tehdään
...
lista
...
kokonaislukujen
...
1
...
-
...
10
...
neliöistä.
Code Block |
---|
} >>> L = [] >>> for i in range(1, 11): L.append(i * i) >>> L [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] >>> {code} |
Tähän
...
on
...
kumminkin
...
Pythonissa
...
kätevämpi
...
keino
...
list
...
comprehension
...
-
...
jolle
...
en
...
löytänyt
...
suomenkielistä
...
nimeä.
...
Se
...
on
...
lauseke,
...
jossa
...
on
...
ikäänkuin
...
for
...
toistorakenne
...
kokoelman
...
sisässä;
...
aluksi
...
listan
...
sisään
...
tulee
...
jokin
...
ilmaisu,
...
jossa
...
käytetään
...
jotain
...
muuttujaa
...
ja
...
sen
...
jälkeen
...
for
...
toistorakenteen
...
ylimmäisin
...
osa
...
ilman
...
kaksoispistettä.
...
Näin
...
synnytetään
...
for
...
toistorakenteen
...
mukaiset
...
arvot,
...
käytetään
...
niitä
...
halutussa
...
lausekkeessa
...
ja
...
sijoitetaan
...
listan
...
alkoiksi.
...
Tässä
...
aiempi
...
esimerkki
...
käyttäen
...
list
...
comprehensonia.
Code Block |
---|
} >>> L = [i * i for i in range(1, 11)] >>> L [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] >>> {code} |
List
...
comprehesnsionissa
...
voi
...
myös
...
käyttää
...
useita
...
for
...
rakenteita
...
peräkkäin,
...
jolloin
...
ne
...
toimivat
...
ikäänkuin
...
sisäkkäiset
...
for
...
toistorakenteet.
...
Tässä
...
tehdään
...
kaikki
...
kertotaulun
...
luvuilla
...
1
...
-
...
5
...
tulokset.
Code Block |
---|
} >>> [i * j for i in range(1, 5) for j in range(1, 5)] [1, 2, 3, 4, 2, 4, 6, 8, 3, 6, 9, 12, 4, 8, 12, 16] >>> {code} |
Nimestään
...
huolimatta
...
tämä
...
tekniikka
...
toimii
...
myös
...
joukoille
...
ja
...
hakurakenteille.
...
Niissä
...
täytyy
...
vain
...
käyttää
...
vastaavasti
...
aalto
...
sulkuja
...
ja
...
hakurakenteessa
...
erottaa
...
avain
...
ja
...
arvo
...
kaksoispisteellä.
...
Tässä
...
niistä
...
esimerkki.
Code Block |
---|
} >>> {i ** 3 for i in range(1, 10)} {64, 1, 8, 512, 343, 216, 729, 27, 125} >>> >>> D = {i : i ** 3 for i in range(1, 10)} >>> D[3] 27 >>> D[7] 343 >>> D {1: 1, 2: 8, 3: 27, 4: 64, 5: 125, 6: 216, 7: 343, 8: 512, 9: 729} >>> {code} |
Tässä
...
voi
...
myös
...
käyttää
...
ehtoa
...
avainsanan
...
if
...
avulla;
...
jos
...
avainsanan
...
if
...
jälkeinen
...
totuusarvo
...
on
...
tosi,
...
alkio
...
lisätään
...
kokoelmaan,
...
muuten
...
ei.
...
Ehtoja
...
voi
...
olla
...
peräkkäin
...
useampikin.
...
Tässä
...
taas
...
tehdään
...
kokonaislukujen
...
neliöistä,
...
mutta
...
valitaan
...
vain
...
parittomat
...
luvut.
Code Block |
---|
} >>> [i * i for i in range(1, 10) if i % 2] [1, 9, 25, 49, 81] >>> {code} |