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ä.