{"id":1111,"date":"2020-08-20T16:29:18","date_gmt":"2020-08-20T13:29:18","guid":{"rendered":"http:\/\/www.hanectica.net\/kasvit\/?p=1111"},"modified":"2020-08-25T14:53:41","modified_gmt":"2020-08-25T11:53:41","slug":"python-listojen-kasittelya-1","status":"publish","type":"post","link":"https:\/\/www.hanectica.net\/kasvit\/2020\/08\/20\/python-listojen-kasittelya-1\/","title":{"rendered":"Python: listojen k\u00e4sittely\u00e4 1"},"content":{"rendered":"<p>T\u00e4ss\u00e4 artikkelissa k\u00e4yd\u00e4\u00e4n l\u00e4pi Pythonin listojen perusk\u00e4sittelyyn liittyv\u00e4\u00e4 tilannetta eli <strong>alkioiden lis\u00e4\u00e4mist\u00e4 listaan<\/strong>. Pythonissa listoihin voi tallentaa erilaista tietoa, kuten kokonais- ja liukulukuja, merkkijonoja ja tupleja sek\u00e4 sanakirjoja. Listan alkioina voi olla my\u00f6s muita listoja. Listan alkiot tallennetaan hakasulkujen [ ] sis\u00e4\u00e4n.<br \/>\nEsimerkkej\u00e4:<br \/>\n<code>kokonaislukuja = [1, 5, 9, 205, 4]<br \/>\nliukulukuja = [1.34, 2.01, 75.3, 23.55]<br \/>\nmerkkijonoja = [<span style=\"color: #008000;\">\"mekko\"<\/span>, <span style=\"color: #008000;\">\"hame\"<\/span>, <span style=\"color: #008000;\">\"housut\"<\/span>, <span style=\"color: #008000;\">\"hattu\"<\/span>, <span style=\"color: #008000;\">\"vaatteita arkeen\"<\/span>]<br \/>\ntuplelista = [(1 , 4), (1.45, 7.5), (90, 54.3)]<br \/>\nsanakirjalista = [{1: <span style=\"color: #008000;\">\"kuusi\"<\/span>}, {2: <span style=\"color: #008000;\">\"koivu\"<\/span>}, {3: <span style=\"color: #008000;\">\"saarni\"<\/span>}]<br \/>\nlistalista = [[1, 2, 5], [3, 4, 6], [21, 3, 5]]<br \/>\nsekalista = [<span style=\"color: #008000;\">\"terve taas\"<\/span>, 3, [3, 6]]<\/code><\/p>\n<p>Pythonin listaan voi lis\u00e4t\u00e4 uusia alkiota, listasta voi poistaa alkiota, ja listan alkioita voi j\u00e4rjestell\u00e4 eri j\u00e4rjestykseen. Lista on siis varsin joustava v\u00e4line tiedon k\u00e4sittelyyn.<\/p>\n<h2>Alkion lis\u00e4\u00e4minen listaan viimeiseksi<\/h2>\n<p>Alkioita voi lis\u00e4t\u00e4 listaan eri tavoin. Jos haluamme lis\u00e4t\u00e4 alkion listan loppuun, se k\u00e4y <strong>append<\/strong>-metodilla. Esimerkiss\u00e4 listan viimeiseksi lis\u00e4t\u00e4\u00e4n luku 13.<\/p>\n<p><code>lista = [2, 5, 9, 11]<br \/>\nlista.append(13)<br \/>\n<span style=\"color: #800080;\">print<\/span>(lista)<br \/>\n<span style=\"color: #0000ff;\">[2, 5, 9, 11, 13]<\/span><\/code><\/p>\n<p>Toinen v\u00e4hemm\u00e4n k\u00e4ytetty tapa toimii samalla tavoin. HUOM! <code>lista += 17<\/code> ei toimi, vaan t\u00e4ss\u00e4 tarvitaan nuo hakasulut lis\u00e4tt\u00e4v\u00e4n alkion ymp\u00e4rille.<\/p>\n<p><code>lista = [3, 6, 8, 10]<br \/>\nlista += [17]<br \/>\n<span style=\"color: #800080;\">print<\/span>(lista)<br \/>\n<span style=\"color: #0000ff;\">[3, 6, 8, 10, 17]<\/span><\/code><\/p>\n<h2>Alkion lis\u00e4\u00e4minen tiettyyn paikkaan listalla<\/h2>\n<p>Koska listan alkiot sijaitsevat tietyss\u00e4 paikassa listalla, uusia alkioita voi sijoittaa listalla my\u00f6s tiettyihin paikkoihin. <strong>insert<\/strong>-metodilla voidaan sijoittaa uudet alkiot halutuille paikoille listassa. Paikat listalla alkavat nollasta (0, 1, 2, 3, 4&#8230;). <code>lista[0]<\/code> tarkoittaa listan 1. paikkaa. Listan paikat h\u00e4nt\u00e4p\u00e4\u00e4st\u00e4 luettuna ovat <code>lista[-1]<\/code>, <code>lista[-2]<\/code> jne.<br \/>\nEsimerkiss\u00e4 <code>lista.insert(2, 7)<\/code> sijoitetaan listassa paikalle 2 uusi luku 7, jolloin siin\u00e4 paikassa oleva 8 siirtyy seuraavalle paikalle, samoin kaikki sen j\u00e4lkeen tulevat alkiot siirtyv\u00e4t yhden paikan verran eteenp\u00e4in.<\/p>\n<p><code>lista = [5, 6, 8, 9]<br \/>\n<span style=\"color: #800080;\">print<\/span>(lista[2])<br \/>\n<span style=\"color: #0000ff;\">8<\/span><br \/>\nlista.insert(2, 7)<br \/>\n<span style=\"color: #800080;\">print<\/span>(lista[2])<br \/>\n<span style=\"color: #0000ff;\">7<\/span><br \/>\n<span style=\"color: #800080;\">print<\/span>(lista)<br \/>\n<span style=\"color: #0000ff;\">[5, 6, 7, 8, 9]<\/span><\/code><\/p>\n<h2>Alkion lis\u00e4\u00e4minen tyhj\u00e4\u00e4n listaan<\/h2>\n<p>Sek\u00e4 append- ett\u00e4 insert-metodia voi k\u00e4ytt\u00e4\u00e4 t\u00e4ss\u00e4kin, kun halutaan lis\u00e4t\u00e4 yksitt\u00e4isi\u00e4 alkioita listaan.<\/p>\n<p><code>lista = []<br \/>\n<span style=\"color: #800080;\">print<\/span>(lista)<br \/>\n<span style=\"color: #0000ff;\">[]<\/span><br \/>\nlista.append(<span style=\"color: #008000;\">\"Python\"<\/span>)<br \/>\nlista.append(<span style=\"color: #008000;\">\"kivaa.\"<\/span>)<br \/>\n<span style=\"color: #800080;\">print<\/span>(lista)<br \/>\n<span style=\"color: #0000ff;\">['Python', 'kivaa.']<\/span><br \/>\nlista.insert(1, <span style=\"color: #008000;\">\"on\"<\/span>)<br \/>\n<span style=\"color: #800080;\">print<\/span>(lista)<br \/>\n<span style=\"color: #0000ff;\">['Python', 'on', 'kivaa.']<\/span><\/code><\/p>\n<p>Joskus voi tulla eteen sellainen erikoistilanne, ett\u00e4 tyhj\u00e4\u00e4n listaan t\u00e4ytyy lis\u00e4t\u00e4 sama alkio monta kertaa. T\u00e4ss\u00e4 p\u00e4\u00e4see kaikkein helpoimmalla n\u00e4in. Esimerkiss\u00e4 haluamme lis\u00e4t\u00e4 tyhj\u00e4\u00e4n listaan 10 kpl kakkosia. Lista ja alkiot luodaan yht\u00e4 aikaa yhdell\u00e4 rivill\u00e4.<\/p>\n<p><code>lista = [2] * 10<br \/>\n<span style=\"color: #800080;\">print<\/span>(lista)<br \/>\n<span style=\"color: #0000ff;\">[2, 2, 2, 2, 2, 2, 2, 2, 2, 2]<\/span><\/code><\/p>\n<p>Lopuksi esimerkki siit\u00e4, miten voidaan pyyt\u00e4\u00e4 k\u00e4ytt\u00e4j\u00e4\u00e4 lis\u00e4\u00e4m\u00e4\u00e4n alkioita tyhj\u00e4\u00e4n listaan. T\u00e4t\u00e4 toki voi k\u00e4ytt\u00e4\u00e4 my\u00f6s silloin, kun listalla on jo alkioita. K\u00e4ytet\u00e4\u00e4n t\u00e4ss\u00e4 k\u00e4tev\u00e4\u00e4 for-silmukkaa, jonka avulla k\u00e4ytt\u00e4j\u00e4\u00e4 pyydet\u00e4\u00e4n kolme kertaa sy\u00f6tt\u00e4m\u00e4\u00e4n tyhj\u00e4lle listalle jonkin alkion.<br \/>\nKoodi voisi n\u00e4ytt\u00e4\u00e4 esimerkiksi t\u00e4lt\u00e4:<\/p>\n<p><code>lista = []<br \/>\n<span style=\"color: #ff6600;\">for<\/span> syote <span style=\"color: #ff6600;\">in<\/span> <span style=\"color: #800080;\">range<\/span>(3):<br \/>\n<span style=\"color: #ffffff;\">----<\/span>syote = <span style=\"color: #800080;\">input<\/span>(<span style=\"color: #008000;\">\"Sy\u00f6t\u00e4 mit\u00e4 tahansa: \"<\/span>)<br \/>\n<span style=\"color: #ffffff;\">----<\/span><span style=\"padding-left: 36;\">lista.append(syote)<\/span><br \/>\n<span style=\"color: #800080;\">print<\/span>(lista)<br \/>\n<\/code><br \/>\nTulostus voisi n\u00e4ytt\u00e4\u00e4 t\u00e4lt\u00e4:<\/p>\n<p><code><span style=\"color: #0000ff;\">Sy\u00f6t\u00e4 mit\u00e4 tahansa:<\/span> 56<br \/>\n<span style=\"color: #0000ff;\">Sy\u00f6t\u00e4 mit\u00e4 tahansa:<\/span> nappi<br \/>\n<span style=\"color: #0000ff;\">Sy\u00f6t\u00e4 mit\u00e4 tahansa:<\/span> 3.14<br \/>\n<span style=\"color: #0000ff;\">['56', 'nappi', '3.14']<\/span><\/code><\/p>\n<p>HUOM! Listan alkiot ovat t\u00e4ss\u00e4 esimerkiss\u00e4 kaikki merkkijonoja, my\u00f6s luvut, sill\u00e4 inputissa ei m\u00e4\u00e4ritelty alkioiden tyyppi\u00e4.<\/p>\n<h2>Alkion lis\u00e4\u00e4minen uuteen listaan<\/h2>\n<p>Monesti on j\u00e4rkev\u00e4\u00e4 s\u00e4ilytt\u00e4\u00e4 alkuper\u00e4inen lista koskemattomana ja luoda uusi samanlainen lista, johon sitten lis\u00e4t\u00e4\u00e4n tarvittavat uudet alkiot. N\u00e4in meill\u00e4 on kaksi listaa, emmek\u00e4 menet\u00e4 alkuper\u00e4isen listan tietoja, jos niit\u00e4 joskus tarvitaan. T\u00e4h\u00e4n tilanteeseen on tarjolla eri tapoja, joista t\u00e4ss\u00e4 kaksi.<\/p>\n<p><u>Ensimm\u00e4isess\u00e4 esimerkiss\u00e4<\/u> luodaan uusi tyhj\u00e4 lista. T\u00e4m\u00e4n j\u00e4lkeen k\u00e4yd\u00e4\u00e4n for-silmukan avulla vanhan listan alkiot l\u00e4pi \u2013 alkio alkiolta \u2013 ja lis\u00e4t\u00e4\u00e4n append-metodilla samoin tein uuteen listaan. For-silmukan j\u00e4lkeen lis\u00e4t\u00e4\u00e4n uuteen listaan viel\u00e4 yksi alkio viimeiseksi.<\/p>\n<p><code>lista = [1, 2, 3, 4]<br \/>\nuusi = []<\/code><\/p>\n<p><code><span style=\"color: #ff6600;\">for<\/span> alkio <span style=\"color: #ff6600;\">in<\/span> lista:<br \/>\n<span style=\"color: #ffffff;\">----<\/span>uusi.append(alkio)<br \/>\nuusi.append(<span style=\"color: #008000;\">\"listassa on nelj\u00e4 lukua\"<\/span>)<\/code><\/p>\n<p><code><span style=\"color: #800080;\">print<\/span>(uusi)<br \/>\n<span style=\"color: #0000ff;\">[1, 2, 3, 4, 'listassa on nelj\u00e4 lukua']<\/span><br \/>\n<span style=\"color: #800080;\">print<\/span>(lista)<br \/>\n<span style=\"color: #0000ff;\">[1, 2, 3, 4]<\/span><\/code><\/p>\n<p><u>Toisessa tapauksessa<\/u> k\u00e4ytet\u00e4\u00e4n lyhyemp\u00e4\u00e4 listan kopiointitapaa <code>uusi = lista[:]<\/code>, jossa luodaan vanhasta listasta t\u00e4ydellinen kopio uuteen.<\/p>\n<p><code>lista = [2, 4, 6]<br \/>\nuusi = lista[:]<\/code><\/p>\n<p><code>uusi.append(<span style=\"color: #008000;\">\"listassa on kolme parillista lukua\"<\/span>)<\/code><\/p>\n<p><code><span style=\"color: #800080;\">print<\/span>(uusi)<br \/>\n<span style=\"color: #0000ff;\">[2, 4, 6, 'listassa on kolme parillista lukua']<\/span><br \/>\n<span style=\"color: #800080;\">print<\/span>(lista)<br \/>\n<span style=\"color: #0000ff;\">[2, 4, 6]<\/span><\/code><\/p>\n<p>Molemmissa tapauksissa alkuper\u00e4inen lista j\u00e4\u00e4 koskemattomaksi.<\/p>\n<h2>Kahden listan yhdist\u00e4minen: extend<\/h2>\n<p>Jos t\u00e4ytyy yhdist\u00e4\u00e4 kaksi listaa yhdeksi, t\u00e4ll\u00f6in apuun tulee extend-metodi. Alla olevassa esimerkiss\u00e4 lista2 yhdistet\u00e4\u00e4n lista1:een.<\/p>\n<p><code>lista1 = [1, 2, 3, 4, 5]<br \/>\nlista2 = [6, 7, 8, 9, 10]<br \/>\nlista1.extend(lista2)<br \/>\n<span style=\"color: #800080;\">print<\/span>(lista1)<br \/>\n<span style=\"color: #0000ff;\">[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]<\/span><\/code><\/p>\n<hr \/>\n<p>T\u00e4ss\u00e4 ensimm\u00e4inen Python-listoja k\u00e4sittelev\u00e4 artikkeli. Jos j\u00e4it jotain kaipaamaan tai jos jotain virheellist\u00e4 olen t\u00e4ss\u00e4 h\u00f6p\u00f6tellyt, niin pist\u00e4 tulemaan <a href=\"mailto:hannele@hanectica.net\">viesti\u00e4<\/a>. \ud83d\ude00<br \/>\n25.8.2020 P\u00e4ivitin teksti\u00e4 extend-metodilla (Kahden listan yhdist\u00e4minen).<\/p>\n<hr \/>\n<p>PS. Koodissa tarvittavissa sisennyksiss\u00e4 k\u00e4ytin ns. &#8221;k\u00f6yh\u00e4n naisen menetelm\u00e4\u00e4&#8221;, eli taustan v\u00e4risi\u00e4 (valkoisia) tavuviivoja, joiden avulla sain siirretty\u00e4 sisennett\u00e4v\u00e4n rivin suurin piirtein oikealle kohdalle. WordPress ei tarjoa t\u00e4llaiseen tapaukseen helppoa tapaa, jolla yhden rivin saisi heitt\u00e4en sisennetty\u00e4. Joten jos kopioit koodeja suoraan t\u00e4lt\u00e4 sivulta, kannattaa tavuviivojen kohdalle tehd\u00e4 oikeoppinen sisennys Python-ohjelmassa, muuten koodi ei toimi. \ud83d\ude00<\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u00e4ss\u00e4 artikkelissa k\u00e4yd\u00e4\u00e4n l\u00e4pi Pythonin listojen perusk\u00e4sittelyyn liittyv\u00e4\u00e4 tilannetta eli alkioiden lis\u00e4\u00e4mist\u00e4 listaan. Pythonissa listoihin voi tallentaa erilaista tietoa, kuten kokonais- ja liukulukuja, merkkijonoja ja tupleja sek\u00e4 sanakirjoja. Listan alkioina voi olla my\u00f6s muita listoja. Listan alkiot tallennetaan hakasulkujen [ &hellip; <a href=\"https:\/\/www.hanectica.net\/kasvit\/2020\/08\/20\/python-listojen-kasittelya-1\/\">Lue loppuun <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1152,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[100],"tags":[107,108,110,109,111,101,105,96,95,106],"class_list":["post-1111","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python-ohjelmointi","tag-alkio","tag-alkion-lisaaminen-listaan","tag-append","tag-extend","tag-insert","tag-lista","tag-listan-muokkaus","tag-ohjelmointi","tag-python","tag-python-3-8-5"],"_links":{"self":[{"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/posts\/1111","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/comments?post=1111"}],"version-history":[{"count":53,"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/posts\/1111\/revisions"}],"predecessor-version":[{"id":1197,"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/posts\/1111\/revisions\/1197"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/media\/1152"}],"wp:attachment":[{"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/media?parent=1111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/categories?post=1111"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/tags?post=1111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}