Listat
Tällä viikolla tutustumme Pythonin kenties yleisimpään kokoelmaan: listoihin. Listat ovat tietorakenteita, joiden pituus kasvaa joustavasti, kun niihin lisätään uusia arvoja. Listoihin voidaan lisätä arvoja myös aiempien arvojen väliin ja listan väleistä voidaan poistaa arvoja.
Tämän oppitunnin sivu toimii muistilappuna erilaisista listaoperaatioista, joten tarvitset aiheen syvälliseksi ymmärtämiseksi myös muuta lähdemateriaalia esimerkiksi seuraavista:
- Ohjelmoinnin perusteet (mooc.fi): Listat
- Python for Everybody (py4e.com): Lists
- Python documentation (docs.python.org): Lists
- Python 3 – ohjelmointiopas: sivut 62-67
Sisällysluettelo
Johdanto kokoelmiin
Seuraava video esittelee tiiviisti Pythonin kokoelmat ja käsittelee niiden eroja ja käyttötarkoituksia.
Eri tietorakenteet nähdään käytännössä seuraavalla videolla:
Listaoperaatiot
Listoja käytetään joko kutsumalla listan metodeja tai käyttämällä operaattoreita, kuten +
tai del
. Seuraavat kappaleet käyvät läpi keskeiset listaoperaatiot, joita tarvitset käsitelläksesi arvoja listoilla.
Listan luominen
tyhja_lista = []
numerolista = [42, 3.14, -1]
kaupungit = ['Helsinki', 'Espoo', 'Vantaa']
Listalle lisääminen
kaupungit = ['Helsinki', 'Espoo', 'Vantaa']
# append lisää loppuun
kaupungit.append('Kauniainen')
# insert lisää tiettyyn indeksiin
kaupungit.insert(0, 'Turku')
print(kaupungit) # ['Turku', 'Helsinki', 'Espoo', 'Vantaa', 'Kauniainen']
kaupungit = ['Helsinki', 'Espoo', 'Vantaa']
# extend lisää kerralla kaikki annetun listan arvot
kaupungit.extend(['Lahti', 'Tampere'])
+
-operaatio yhdistää kaksi listaa ja muodostaa niiden perusteella kolmannen listan:
kaupungit1 = ['Helsinki', 'Espoo', 'Vantaa']
kaupungit2 = ['Lahti', 'Tampere']
kaikki = kaupungit1 + kaupungit2
print(kaikki) # ['Helsinki', 'Espoo', 'Vantaa', 'Lahti', 'Tampere']
Listalta hakeminen
Listan alkioiden hakeminen indeksien avulla toimii aivan kuten merkkijonojen merkkien ja osamerkkijonojen hakeminen:
kaupungit = ['Helsinki', 'Espoo', 'Vantaa']
kaupungit[0] # 'Helsinki'
kaupungit[0:2] # ['Helsinki', 'Espoo']
kaupungit[-2:] # ['Espoo', 'Vantaa']
Arvon korvaaminen
insert
- ja append
-metodit lisäävät listalle arvoja korvaamatta siinä valmiiksi olevia arvoja. Jos sen sijaan haluat korvata tietyssä indeksissä olevan arvon uudella, voit määritellä kohdeindeksin hakasulkuihin ja asettaa uuden arvon sijoitusoperaattorilla:
kaupungit = ['Helsinki', 'Espoo', 'Vantaa']
kaupungit[0] = 'Helsingfors'
print(kaupungit) # ['Helsingfors', 'Espoo', 'Vantaa']
Listalta poistaminen
kaupungit = ['Helsinki', 'Espoo', 'Vantaa']
# del poistaa listalta tietyn indeksin
del kaupungit[0]
print(kaupungit) # ['Espoo', 'Vantaa']
Listan sisällön tutkiminen
Kuten merkkijonojen kanssa, arvojen etsiminen listalta tapahtuu in
-operaatiolla:
'Helsinki' in kaupungit # True
Listalla olevien arvojen lukumäärä
kaupungit = ['Helsinki', 'Espoo', 'Vantaa']
print(len(kaupungit)) # 3
Listan arvojen läpikäynti
kaupungit = ['helsinki', 'espoo', 'vantaa']
for nimi in kaupungit:
print(nimi.capitalize())
Listan arvojen läpikäynti (indeksillä)
Toisinaan listan arvoja käsiteltäessä tarvitaan myös niiden indeksejä. Erityisesti tämä on tarpeen silloin, kun listalla olevia arvoja korvataan toisilla arvoilla:
kaupungit = ['helsinki', 'espoo', 'vantaa']
for i in range(0, len(kaupungit)):
kaupungit[i] = kaupungit[i].capitalize()
print(kaupungit) # ['Helsinki', 'Espoo', 'Vantaa']
Listan järjestäminen
kaupungit = ['Vantaa', 'Helsinki', 'Espoo']
kaupungit.sort()
print(kaupungit) # ['Espoo', 'Helsinki', 'Vantaa']
Videoiden lisenssi
Tässä oppimateriaalissa hyödynnetyt Microsoftin Python for Beginners -videosarjan videot on lisensoitu Creative Commons Attribution-Noncommercial-No Derivative Works 4.0 International -lisenssillä.