Sorter og opdele lister

Python kan sorterer lister og det er muligt at tilgå hvert enkelt element i listen.

Sorterer en liste

Python kan nemt sortere en liste. Prøv at se følgende eksempel med listen navne:

# eks5-2-1.py

navne = ['Katrine', 'Emilie', 'Caroline', 'Mads', 'Emil', 'Sebastian']
navne.sort()

print('\n\nSorteret\n--------')
# Udskriv navne i listen - et ad gangen
for navn in navne:
    print(navn)

navne.sort(reverse=True)

print('\n\nOmvendt\n-------')
# Udskriv navne i listen - et ad gangen
for navn in navne:
    print(navn)

Listen bliver sorteret ved at bruge metoden sort(), hvorefter listen er sorteret i alfabetisk orden. Listen kan også meget nemt sortere modsat (altså det sidste navn i alfabetet først) ved at sætte reverse = true.

Længde af en liste

Python kan også give længden af en liste. Det er nemt at tælle længden med en for-løkke med i stedet kan vi bruge len() funktionen, som giver et heltal med længden.

Len() giver antal elementer i listen, men Python starter med at tælle fra 0 når vi vil have det første element, som i det eksempel herunder.

# eks5-2-1.py

navne = ['Katrine', 'Emilie', 'Caroline', 'Mads', 'Emil', 'Sebastian']

# Laengden af listen findes med len()
antal_navne = len(navne)

print("Listen indeholder " + str(antal_navne) + " navne.")

# Det er muligt at tage et element ud af listen direkte
foerste_navn = navne[0]
print("Foerste navn er " + foerste_navn)

Hele listen kan udskrives ved at tilgå hvert element, som på siden før denne. Det er ikke så elegant, men eksemplet her viser, hvordan Python kan tilgå hvert enkelt element i listen.

# eks5-2-1.py

navne = ['Katrine', 'Emilie', 'Caroline', 'Mads', 'Emil', 'Sebastian']

# Udskriv navne i listen - et ad gangen

antal_navne = len(navne)

for i in range(0, antal_navne):
    print(navne[i])

Variablen antal_navne værdi er længden af listen navne og for løkken tæller fra 0 til listens længde.

Opdele en liste

Python kan også opdele en liste, hvilket ses her.

# eks5-2-1.py

navne = ['Katrine', 'Emilie', 'Caroline', 'Mads', 'Emil', 'Sebastian']

# Tage en af listen giver en ny liste
mellem_navne = navne[1:3]

print(mellem_navne)

Python laver en ny liste kaldet mellem_navne, som indeholder to navne. Det bil side at programmet skriver følgende ud.

['Emilie', 'Caroline']

Det er også muligt at fortælle Python at tage til listen eller slutningen af listen. Listen er den samme, som i de andre eksempler.

For at dele listen i to skal Python kende midten af listen, hvilket sker ved at tage listens længde og dele med 2.

Den første del er gemt i listen forste_del ved at hele listen  ved [:midt]. Det tager den første del til listen, og den næste [midt:] betyder fra midt til slutningen.

Hele programmet ser således ud.

# eks5-2-1.py

navne = ['Katrine', 'Emilie', 'Caroline', 'Mads', 'Emil', 'Sebastian']
navne.sort()

print('\n\nSorteret\n--------')
# Udskriv navne i listen - et ad gangen
for navn in navne:
    print(navn)

navne.sort(reverse=True)

print('\n\nOmvendt\n-------')
# Udskriv navne i listen - et ad gangen
for navn in navne:
    print(navn)

Du har lært

  • Sortere en liste (både i normal og omvendt rækkefølge)
  • Finde længden af en liste (antallet af elementer)
  • Tage et enkelt element eller flere elementer ud af listen. Enten i en variable eller en ny liste