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