Pythonin tietorakenteet

Aloita listoista. Tuple, joukko ja sanakirja tarjoavat muita tapoja säilyttää tietoa; niitä voi opiskella tämän tutoriaalin loppuosasta.

Listan luonti ja muokkaus

Lista säilyttää alkioiden järjestyksen ja on muokattava. append lisää yhden alkion, insert lisää valittuun indeksiin. Indeksi 1 tarkoittaa toista paikkaa. pop poistaa indeksin ja palauttaa arvon, remove poistaa ensimmäisen annetun arvon ja del poistaa indeksin avulla.

lista = ["Hei", "KoodiGuru"]
lista.append("!")
lista.insert(1, "Python")
print(lista)
lista.remove("Python")
lista.pop()
del lista[0]
print(lista)

Tulostus (ilman syötteiden kysymystekstejä):

['Hei', 'Python', 'KoodiGuru', '!']
['KoodiGuru']

Järjestäminen, pituus ja kopio

sort järjestää alkuperäisen listan ja palauttaa None. sorted palauttaa uuden listan. len laskee suorat alkiot, ei sisäkkäisten listojen sisältöä. b = a jakaa saman listan; a.copy() tekee matalan kopion.

luvut = [5, 1, 3]
luvut.sort()
print(luvut)
luvut.append([10, 20])
print(len(luvut))
print(luvut[-1])

Tulostus (ilman syötteiden kysymystekstejä):

[1, 3, 5]
4
[10, 20]
a = [1, 2]
b = a
c = a.copy()
b.append(3)
print(a)
print(c)

Tulostus (ilman syötteiden kysymystekstejä):

[1, 2, 3]
[1, 2]

Sisäkkäinen lista ja extend

append([3,4]) lisää yhden lista-alkion. extend([3,4]) lisää kaksi erillistä alkiota. Listan viipale luo uuden listan. Eri tyyppisiä arvoja voi säilyttää samassa listassa, mutta kaikkia tyyppejä ei voi järjestää keskenään.

a = [1, 2]
a.append([3, 4])
b = [1, 2]
b.extend([3, 4])
print(a, len(a))
print(b, len(b))

Tulostus (ilman syötteiden kysymystekstejä):

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

Tuple ja joukko

Tuplen paikkoja ei voi vaihtaa luomisen jälkeen; tuplen sisällä oleva muokattava olio voi silti muuttua. Yhden alkion tuple kirjoitetaan (arvo,). set sisältää erilliset hajautettavat arvot eikä lupaa tulostusjärjestystä. Tyhjä joukko on set(), sillä {} luo sanakirjan.

piste = (2, 3)
x, y = piste
print(x, y)
arvot = [3, 1, 3, 2]
print(sorted(set(arvot)))

Tulostus (ilman syötteiden kysymystekstejä):

2 3
[1, 2, 3]

Sanakirja

dict on muokattava ja säilyttää lisäysjärjestyksen. Avaimet ovat yksilöllisiä ja hajautettavia. Haku []-merkinnällä vaatii olemassa olevan avaimen; get sallii oletusarvon. items antaa avain–arvo-parit.

saldot = {"omena": 2, "päärynä": 1}
saldot["omena"] += 3
print(saldot["omena"])
print(saldot.get("luumu", 0))
for nimi, maara in saldot.items():
    print(nimi, maara)

Tulostus (ilman syötteiden kysymystekstejä):

5
0
omena 5
päärynä 1

Kokoelmasta tekstiksi

join yhdistää merkkijonoja. Numerot täytyy muuntaa tekstiksi ensin; map(str, luvut) tekee muunnoksen jokaiselle alkiolle.

luvut = [1, 2, 3]
print(",".join(map(str, luvut)))

Tulostus (ilman syötteiden kysymystekstejä):

1,2,3

Kokeile itse

Miksi lista = lista.sort() ei ole oikea tapa säilyttää järjestetty lista?

Vastaus ja perustelu

sort muuttaa listan paikallaan ja palauttaa None. Sijoitus korvaisi listaan viittaavan nimen None-arvolla. Kirjoita lista.sort() tai lista = sorted(lista).

Suorita koodiesimerkit yksi kerrallaan. Jokainen esimerkki sisältää tarvitsemansa määrittelyt. Vertaa omaa ennustettasi tulosteeseen ennen seuraavaan aiheeseen siirtymistä.

Katso aihevideo YouTubessa