3. Mer om listor

Programmeringsteknik

(Skillnad mellan versioner)
Hoppa till: navigering, sök
Rad 10: Rad 10:
{{Info|
{{Info|
'''Innehåll:'''
'''Innehåll:'''
-
 
+
* Olika sätt att komma åt värden i en lista
 +
* Skriva ut listor
 +
* Append
 +
* Sortering
}}
}}
-
Det finns ytterligare några list-kommandon som är bra att känna till. Man kan lägga till ett nytt element i slutet av en lista med hjälp av <code>append()</code>:
+
Om du vill lära dig ännu mer om listor så finns det en länk på kursens [[huvudsida]] under rubriken [[Huvudsida#Pythonlänkar|Pythonlänkar]].
-
<pre>namn = ["Adam", "Bertil", "Ceasar"]
 
-
namn.append("David") # Listan namn utökas till ["Adam", "Bertil", "Ceasar", "David"]</pre>
 
-
Man kan också slå samman två listor med hjälp av ett vanligt plus-tecken:
+
==Olika sätt att komma åt värden i en lista==
-
<pre>a = [1, 2, 3] + [4, 5] # Resultatet blir [1, 2, 3, 4, 5]</pre>
+
<pre>veckodagar = ["mån", "tis", "ons", "tor", "fre", "lör", "sön"]
-
Slutligen kan man plocka ut dellistor följande sätt:
+
# Ifall vi vet index det värde vi vill komma åt
 +
onsdag = veckodagar[2]
 +
# Ifall vi vill komma åt de på index 1 till 3
 +
vardagar = veckodagar[0:5]
 +
helgdagar = veckodagar[5:7]
 +
 +
# Ifall vi vill komma åt allt förutom de två första värdena
 +
veckodagar[2:]
 +
 +
# Ifall vi enbart vill komma åt de två första värdena
 +
veckodagar[:2])
 +
 +
# Ifall vi vill skriva ut varannat värde
 +
udda_dagar = veckodagar[::2])
 +
jämna_dagar = veckodagar[1::2])
 +
 +
# Ifall vi inte vet hur många värden som finns och vill komma åt det sista värdet
 +
print(namnlista[len(namnlista)-1])</pre>
 +
 +
 +
==Skriva ut listor==
 +
 +
<pre>nummerlista = [1,2,3,4,5]
 +
 +
for nummer in nummerlista:
 +
print(nummer)</pre>
 +
 +
Om en lista består av strängar så kan man istället använda sig av <code>join</code>. Den funkar så här:
 +
<code><sträng>.join([lista])</code>. <code><sträng></code> är den separator som ska skilja elementen i listan åt, det kan vara t.ex. radbrytning: "\n", mellanrum: " " eller punkter: ".."
<pre>veckodagar = ["mån", "tis", "ons", "tor", "fre", "lör", "sön"]
<pre>veckodagar = ["mån", "tis", "ons", "tor", "fre", "lör", "sön"]
-
vardagar = veckodagar[0:5] # plockar ut elementen fr o m index 0 t o m index 4 i listan
 
-
helgdagar = veckodagar[5:7] # plockar ut elementen fr o m index 5 t o m index 6 i listan</pre>
 
-
Om du vill lära dig ännu mer om listor så finns det en länk på kursens [[huvudsida]] under rubriken [[Huvudsida#Pythonlänkar|Pythonlänkar]].
+
"".join(veckodagar) # skriver ut "måntisonstorfrelörsön"
 +
 
 +
", ".join(veckodagar) # skriver ut "mån, tis, ons, tor, fre, lör, sön"</pre>
 +
 
 +
 
 +
==Append==
 +
 
 +
Man kan lägga till ett nytt element i slutet av en lista med hjälp av <code>append()</code>:
 +
 
 +
<pre>namnlista = ["Adam", "Bertil", "Ceasar"]
 +
namnlista.append("David") # Listan utökas till ["Adam", "Bertil", "Ceasar", "David"]</pre>
 +
 
 +
Man kan också slå samman två listor med hjälp av ett vanligt plus-tecken:
 +
 
 +
<pre>nummerlista = [1, 2, 3] + [4, 5] # Resultatet blir [1, 2, 3, 4, 5]</pre>
 +
 
 +
 
 +
==Sortering==
 +
 
 +
<pre>nummerlista = [3, 7, 4, 1, 5, 10]
 +
 
 +
# Sortera från minst värde till högst
 +
nummerlista.sort() # Ger [1, 3, 4, 5, 7, 10]
 +
 
 +
# Sortera från högst värde till minst
 +
nummerlista.reverse() # Ger [10, 7, 5, 4, 3, 1]
 +
 
 +
# Ifall du vill ha en sorterad kopia
 +
# nummerlista_kopia = sorted(nummerlista)
 +
</pre>

Versionen från 5 april 2012 kl. 14.44

       Teori          Mer om listor          Övningar      

Innehåll:

  • Olika sätt att komma åt värden i en lista
  • Skriva ut listor
  • Append
  • Sortering

Om du vill lära dig ännu mer om listor så finns det en länk på kursens huvudsida under rubriken Pythonlänkar.


Olika sätt att komma åt värden i en lista

veckodagar = ["mån", "tis", "ons", "tor", "fre", "lör", "sön"]

# Ifall vi vet index på det värde vi vill komma åt
onsdag = veckodagar[2]

# Ifall vi vill komma åt de på index 1 till 3
vardagar = veckodagar[0:5]
helgdagar = veckodagar[5:7] 

# Ifall vi vill komma åt allt förutom de två första värdena
veckodagar[2:]

# Ifall vi enbart vill komma åt de två första värdena
veckodagar[:2])

# Ifall vi vill skriva ut varannat värde
udda_dagar = veckodagar[::2])
jämna_dagar = veckodagar[1::2])

# Ifall vi inte vet hur många värden som finns och vill komma åt det sista värdet
print(namnlista[len(namnlista)-1])


Skriva ut listor

nummerlista = [1,2,3,4,5]

for nummer in nummerlista:
    print(nummer)

Om en lista består av strängar så kan man istället använda sig av join. Den funkar så här: <sträng>.join([lista]). <sträng> är den separator som ska skilja elementen i listan åt, det kan vara t.ex. radbrytning: "\n", mellanrum: " " eller punkter: ".."

veckodagar = ["mån", "tis", "ons", "tor", "fre", "lör", "sön"]

"".join(veckodagar)   # skriver ut "måntisonstorfrelörsön"

", ".join(veckodagar) # skriver ut "mån, tis, ons, tor, fre, lör, sön"


Append

Man kan lägga till ett nytt element i slutet av en lista med hjälp av append():

namnlista = ["Adam", "Bertil", "Ceasar"]
namnlista.append("David")    # Listan utökas till ["Adam", "Bertil", "Ceasar", "David"]

Man kan också slå samman två listor med hjälp av ett vanligt plus-tecken:

nummerlista = [1, 2, 3] + [4, 5]    # Resultatet blir [1, 2, 3, 4, 5]


Sortering

nummerlista = [3, 7, 4, 1, 5, 10]

# Sortera från minst värde till högst
nummerlista.sort()   # Ger [1, 3, 4, 5, 7, 10]

# Sortera från högst värde till minst
nummerlista.reverse()    # Ger [10, 7, 5, 4, 3, 1]

# Ifall du vill ha en sorterad kopia
# nummerlista_kopia = sorted(nummerlista)