Indexering och nollbaserad numrering
Indexering används för att nå ett särskilt element i en lista, eller ett särskilt tecken i en sträng. För att få ut ett element ur ett objekt genom indexering använder man sig av krokparenteser.
En viktig sak att komma ihåg är att Python, precis som de flesta andra programmeringsspråk, använder sig av nollbaserad numrering. Detta innebär att listor i Python börjar med det nollte elementet, och inte det första som vi annars brukar börja med.
# I den här listan är alltså "måndag" det nollte elementet, "tisdag" det första, "onsdag" det andra... osv.
>>> veckodagar = ["måndag", "tisdag", "onsdag", "torsdag", "fredag"]
>>> print(veckodagar[0])
"måndag"
Indexering används också för att skriva ut särskilda tecken i en sträng. Här får man inte glömma att mellanslag också räknas som tecken!
>>> min_mening = "Hej på dig, jag heter Albert"
>>> print(min_mening[0])
"H"
>>> print(min_mening[7])
"d"
Slicing
Slicing används för att skriva ut en teckensekvens ur en sträng, eller en elementsekvens i en lista.Om vi vill skriva ut alla element från index 0 till 9 i en lista som kallas a
skriver vi a[0:10]
. Precis som i indexering använder vi nollbaserad numrering. En sak som kan tyckas konstig är att vi skriver 10
fast vi egentligen bara vill ha fram till det 9:onde elementet. Detta beror på att Python tolkar det sista indexet i slicing som att "från och med här tar det stopp". Kanske ointuitivt i början, men precis som noll-baserad indexering är det mest en vanesak.
>>> min_mening = "Hej på dig, jag heter Albert"
>>> print(min_mening[0:10])
"Hej på dig"
# Det 10:de tecknet är kommatecknet, som alltså inte skrivs ut
Step index
Med step index kan man få ut vissa specifika tecken/värden ur ett objekt genom att följa ett matematiskt mönster och hoppa över ett visst antal element. Detta görs genom att skriva dubbla kolontecken.
>>> a = [1,2,3,4,5,6,7,8,9,10]
>>> a[::3]
[1, 4, 7, 10]
>>> a = [1,2,3,4,5,6,7,8,9,10]
>>> a[2::3]
[3, 6, 9]
Step index kan till och med användas för att vända på ordningen i en lista, eller skriva ut en sträng baklänges!
>>> min_mening = "Hej på dig, jag heter Albert"
>>> print(min_mening[::-1])
"treblA reteh gaj ,gid åp jeH"
# Det här kan vara bra att använda om man t.ex. vill skriva ett program som hittar palindromer!
OBS! Detta fungerar endast i listor och strängar eftersom elementen där har en bestämd ordningsföljd! Det går alltså inte att "vända på ordningen" i en dictionary t.ex.