Tie koodariksi

Ohjelmoinnin alkeet

Luku 13: Lista

Lista on kokoelma tietoa, johon viitataan yhteisen nimen kautta. Lista muodostuu alkioista, joista jokainen vastaa yksittäistä muuttujaa. Esimerkiksi [1,3,4,8] on lista, jossa on neljä alkiota.

Listan luominen

Voimme luoda listan antamalla sen sisällön hakasuluissa:
lista = [1,3,4,8]
Toinen tapa on aloittaa tyhjästä listasta [] ja käyttää append-komentoa, joka lisää uuden alkion listan loppuun:
lista = []
lista.append(1)
lista.append(3)
lista.append(4)
lista.append(8)
Voimme myös luoda listan toistamalla tiettyä alkiota. Esimerkiksi seuraava koodi luo listan [1,1,1,1]:
lista = [1]*4

Listan käsittely

Listaa voi käsitellä melko samalla tavalla kuin merkkijonoa: funktio len kertoo alkioiden määrän ja alkioihin voi viitata []-merkinnällä. Seuraava koodi esittelee asiaa:
lista = [1,3,4,8]
print(len(lista))
print(lista[0])
print(lista[1])
Ohjelman tulostus on seuraava:
4
1
3

Listan läpikäynti

Voimme käydä läpi listan alkiot for-silmukan avulla näin:
lista = [1,3,4,8]
for x in lista:
    print(x)
Ohjelman tulostus on seuraava:
1
3
4
8
Tämä muistuttaa paljon lukuvälin läpikäyntiä, mitä teimme jo luvussa 4. Voimmekin ajatella, että funktio range tuottaa listan, jossa on lukuvälin luvut.

Listan järjestäminen

Listan osana on komento sort, jonka avulla sen alkiot voi järjestää pienimmästä suurimpaan. Seuraava ohjelma antaa näytteen tästä:
lista = [5,2,9,8,3]
print(lista)
lista.sort()
print(lista)
Ohjelman tulostus on seuraava:
[5, 2, 9, 8, 3]
[2, 3, 5, 8, 9]

Seuraavissa tehtävissä aineistona on lista X, jossa on 100 satunnaista lukua väliltä 1...1000. Voit kopioida listan tehtäviä varten koodiisi tästä:

listaX = [932, 168, 876, 250, 426, 231, 554, 105, 888, 684, 639, 131, 140, 382, 479, 402, 125, 264, 286, 290, 205, 944, 761, 735, 611, 646, 908, 438, 852, 937, 397, 503, 591, 736, 734, 124, 434, 952, 269, 13, 164, 161, 128, 170, 646, 200, 331, 946, 590, 973, 569, 784, 778, 358, 463, 712, 283, 357, 959, 598, 518, 853, 305, 767, 44, 135, 175, 407, 677, 749, 714, 517, 766, 346, 488, 687, 338, 375, 341, 582, 912, 389, 224, 326, 561, 106, 756, 709, 445, 106, 727, 258, 671, 48, 857, 69, 171, 840, 335, 696]

Tehtävä 1 Ratkaisematon

Tee ohjelma, joka tulostaa listan X lukujen summan.

Kirjoita ohjelma tähän:


Tehtävä 2 Ratkaisematon

Tee ohjelma, joka tulostaa listan X parillisten lukujen summan.

Kirjoita ohjelma tähän:


Tehtävä 3 Ratkaisematon

Tee ohjelma, joka tulostaa listan X pienimmän ja suurimman luvun omille riveilleen.

Kirjoita ohjelma tähän:


Tehtävä 4 Ratkaisematon

Tee ohjelma, joka tulostaa suurimman eron kahden peräkkäisen luvun välillä listalla X.

Kirjoita ohjelma tähän:


Tehtävä 5 Ratkaisematon

Tee ohjelma, joka tulostaa summan, joka saadaan laskemalla yhteen 10 suurinta lukua listalla X.

Kirjoita ohjelma tähän:


Tehtävä 6 Ratkaisematon

Pascalin kolmio on kuvio, jonka reunoilla on lukua 1 ja jokainen muu luku on kahden ylemmän luvun summa. Tässä on Pascalin kolmion 5 ylintä tasoa listoina:

[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]

Tee ohjelma, joka tulostaa vastaavasti Pascalin kolmion 25 ylintä tasoa.

Kirjoita ohjelma tähän: