Pythonin tietorakenteet
Python Listat
Listat ovat Pythonissa erittäin tärkeä tietorakenne. Ne ovat järjestettyjä kokoelmia, jotka voivat sisältää minkä tahansa tyyppisiä arvoja. Tässä tutoriaalissa käydään läpi Pythonin listojen perusteita.
Merkkijonojen ja Listojen Erot
Vaikka merkkijonot ja listat voivat näyttää samanlaisilta, koska molemmat sisältävät järjestettyjä kokoelmia arvoja, ne ovat erittäin erilaisia. Merkkijonot ovat muuttumattomia, mikä tarkoittaa, että kerran luodun merkkijonon arvoja ei voida muuttaa. Toisaalta listat ovat muutettavissa, joten voit muuttaa listan arvoja sen luomisen jälkeen.
Listojen Luonti
Pythonissa listan luonti on yksinkertaista. Voit alustaa listan sijoittamalla arvot hakasulkujen sisään, erottaen ne pilkuilla.
lista = ['Hello', 'KoodiGuru', 1, 2.5]
Listan Pituuden Selvittäminen
Pythonin sisäänrakennettu len()
-funktio antaa listan pituuden.
lista = ['Hello', 'KoodiGuru', 1, 2.5]
print(len(lista)) # Tulostaa: 4
Alkion Lisääminen Listaan
Pythonissa voit lisätä arvoja listalle append()
ja insert()
metodien avulla. append()
lisää arvon listan loppuun, kun taas insert()
voi lisätä arvon mihin tahansa kohtaan listaa.
lista = ['Hello', 'KoodiGuru'] lista.append('!')
print(lista) # Tulostaa: ['Hello', 'KoodiGuru', '!']
lista.insert(2, 'World') print(lista) # Tulostaa: ['Hello', 'KoodiGuru', 'World', '!']
Alkion Poisto listasta
Voit poistaa arvon listalta remove()
metodilla, joka poistaa ensimmäisen esiintymän määritetystä arvosta, pop()
metodilla, joka poistaa arvon määritetystä sijainnista listalla tai del
lauseella, joka poistaa arvon suoralla indeksoinnilla.
Hello', 'KoodiGuru', 'World', '!']
lista.remove('World')
print(lista) # Tulostaa: ['Hello', 'KoodiGuru', '!']
lista.pop(2)
print(lista) # Tulostaa: ['Hello', 'KoodiGuru']
del lista[1]
print(lista) # Tulostaa: ['Hello']
Listojen Järjestäminen
Pythonin listat voidaan järjestää sort()
metodin avulla.
numbers = [5, 1, 9, 3]
numbers.sort()
print(numbers) # Tulostaa: [1, 3, 5, 9]
Listat listojen sisällä
Pythonissa voit luoda listoja, jotka sisältävät muita listoja. Nämä ovat tunnettuja nimellä moniulotteiset listat.
lista = [['Hello', 'KoodiGuru'], [1, 2.5]]
Listojen alkioihin viittaaminen
Pythonin listat tukevat indeksointia, joten voit hakea yksittäisiä arvoja listalta tai luoda uusia listoja listan osista. Pythonissa viittaus viimeiseen listan alkioon tapahtuu indeksillä -1
.
lista = ['Hello', 'KoodiGuru', 'World', '!']
print(lista[1]) # Tulostaa: 'KoodiGuru'
print(lista[-1]) # Tulostaa: '!'
print(lista[1:3]) # Tulostaa: ['KoodiGuru', 'World']
Listan muuttaminen merkkijonoksi
Pythonissa voit helposti muuttaa listan merkkijonoksi join()
-funktion avulla, joka on määritelty str
-luokassa. join()
-funktiolla voit yhdistää listan alkiot yhdeksi merkkijonoksi määritellyllä erottimella. Esimerkiksi:
# Luodaan lista
my_list = ['T', 'e', 'r', 'v', 'e', 't', 'u', 'l', 'o', 'a']
# Muunnetaan lista merkkijonoksi käyttämällä join()-funktiota
my_string = ''.join(my_list)
# Tulostetaan muunnettu merkkijono
print(my_string)
Tämän koodin suorittaminen tulostaa: Tervetuloa
.
Tässä esimerkissä merkkijonojen join()
-funktio ottaa listan merkkijonoja (my_list
) ja liittää ne yhteen. Tyhjät lainausmerkit (''
) ennen join()
-funktiota tarkoittavat, että listan alkiot liitetään yhteen ilman erottimia.
Jos haluat lisätä erottimen jokaisen merkin välille, voit tehdä sen seuraavasti:
# Luodaan lista
my_list = ['O', 'p', 'i', 's', 'k', 'e', 'l', 'u']
# Muunnetaan lista merkkijonoksi käyttämällä join()-funktiota
# Lisätään välilyönti (' ') erottimena
my_string = ' '.join(my_list)
# Tulostetaan muunnettu merkkijono
print(my_string)
Tämän koodin suorittaminen tulostaa: O p i s k e l u
.
Tässä esimerkissä välilyönti (' ') ennen join()
-funktiota toimii erottimena listan alkioiden välillä. Voit käyttää mitä tahansa merkkiä tai merkkijonoa erottimena, esimerkiksi pilkkua (','), alaviivaa ('_') tai mitä tahansa muuta.
Huomaa, että join()
-funktion argumentin on oltava merkkijonoja. Jos listan alkiot eivät ole merkkijonoja, sinun on muunnettava ne merkkijonoiksi ennen join()
-funktion käyttöä. Tämän voit tehdä esimerkiksi map()
-funktion avulla:
# Luodaan lista numeroista
my_list = [1, 2, 3, 4, 5]
# Muunnetaan numerot merkkijonoiksi map()-funktion avulla
# ja liitetään ne yhteen ','-erottimella
my_string = ','.join(map(str, my_list))
# Tulostetaan muunnettu merkkijono
print(my_string)
Tämän koodin suorittaminen tulostaa: 1,2,3,4,5
. Tässä map(str, my_list)
muuntaa jokaisen listan alkion merkkijonoksi, jonka jälkeen ne yhdistetään join()
-funktion avulla.
Tuple-tietorakenne
Tuple on toinen tietotyyppi, joka on hyvin samanlainen kuin lista. Se on järjestetty kokoelma arvoja. Ero on siinä, että tuple on muuttumaton, mikä tarkoittaa, että et voi muuttaa sen arvoja kerran kun se on luotu. Muuttumattomuus lisää joissain tilaneissa turvallisuutta koska tuple ei voi muuttua käsiteltäessä. Lisäksi tuple on yleensä hieman tehokkaampi kuin lista, koska sen sisäinen rakenne on yksinkertaisempi. Tupleja luodaan sijoittamalla arvot sulkeisiin ()
erottaen ne pilkuilla.
tuple_tyyppi = ('Hello', 'KoodiGuru', 1, 2.5)
Set-tietorakenne
Set on myös tietotyyppi, joka on kuin lista, mutta se ei ole järjestetty ja se sisältää vain uniikkeja arvoja. Setit luodaan sijoittamalla arvot aaltosulkeisiin {}
erottaen ne pilkuilla.
set_tyyppi = {'Hello', 'KoodiGuru', 1, 2.5}
Duplikaatien poisto listasta setin avulla
Pythonin setin avulla voit poistaa duplikaatit listalta. Tämä johtuu siitä, että setit eivät salli duplikaatteja, joten kun lista muunnetaan setiksi, kaikki duplikaatit poistetaan.
lista = ['Hello', 'KoodiGuru', 'Hello', 'Hello', '!'
lista = list(set(lista))
print(lista) # Tulostaa: ['KoodiGuru', '!', 'Hello']
Huomaa, että setit eivät ole järjestettyjä, joten kun lista muunnetaan setiksi, alkuperäinen järjestys saattaa hävitä.
Dictionary-tietorakenne
Pythonin dictionary
eli sanakirja on muuttumaton, järjestämätön tietorakenne, joka tallentaa arvoja avaimen mukaan. Sanakirjan avain-arvo-parit ovat erillään toisistaan kaksoispisteen :
avulla ja kukin pari on erillään toisistaan pilkulla ,
. Sanakirjan avain-arvoparit tallennetaan sulkeisiin {}
.
Tässä on esimerkki sanakirjan luomisesta:
my_dict = {
'key1': 'value1',
'key2': 'value2',
'key3': 'value3',
}
Sanakirjan käyttö
Arvojen hakeminen sanakirjasta tapahtuu avaimen avulla:
print(my_dict['key1']) # Tulostaa: value1
Jos yrität hakea arvoa avaimella, jota ei ole sanakirjassa, Python heittää KeyError
-poikkeuksen. Voit kuitenkin käyttää get
-metodia, joka palauttaa None
tai oletusarvon, jos avainta ei ole olemassa:
print(my_dict.get('key4')) # Tulostaa: None
print(my_dict.get('key4', 'default')) # Tulostaa: default
Sanakirjan muokkaaminen
Sanakirjaan voidaan lisätä uusia avain-arvopareja suoraan:
my_dict['key4'] = 'value4'
print(my_dict) # Tulostaa: {'key1': 'value1', 'key2': 'value2', 'key3': 'value3', 'key4':'value4'}
Sanakirjan arvoja voidaan myös muuttaa viittaamalla niiden avaimeen:
my_dict['key1'] = 'new value'
print(my_dict) #Tulostaa:{'key1': 'new value', 'key2': 'value2', 'key3': 'value3', 'key4':'value4'}
Avain-arvopari voidaan poistaa del
-avainsanalla:
del my_dict['key1']
print(my_dict) # Tulostaa: {'key2': 'value2', 'key3': 'value3', 'key4': 'value4'}
Sanakirjan läpikäynti
Sanakirjan avaimet, arvot tai avain-arvoparit voidaan käydä läpi keys
, values
tai items
-metodeilla:
# Käy läpi avaimet
for key in my_dict.keys():
print(key)
# Käy läpi arvot
for value in my_dict.values():
print(value)
# Käy läpi avain-arvoparit
for key, value in my_dict.items():
print(key, value)