Indexing and Slicing
Strings are sequences: each character has a position (an index). Python uses zero-based indexing, so the first character is at index 0
. You can take single characters with indexing and ranges of characters with slicing.
Indexing
Use square brackets with a single position.
123s = "python" print(s[0]) # 'p' (first character) print(s[5]) # 'n' (sixth character)
Negative indices count from the end.
123s = "python" print(s[-1]) # 'n' (last character) print(s[-2]) # 'o' (second from the end)
Indexing must hit an existing position; otherwise you get IndexError
.
12s = "python" print(s[10]) # IndexError: string index out of range
Also, strings are immutable, so you can read s[i]
but not assign to it.
12s = "python" s[0] = 'P' # TypeError: 'str' object does not support item assignment
Slicing
A slice uses start:stop:step
and returns a new string. stop
is exclusive (it's not included).
12345s = "python" print(s[1:4]) # 'yth' (indices 1,2,3) print(s[:4]) # 'pyth' (start defaults to 0) print(s[3:]) # 'hon' (stop defaults to len(s)) print(s[::2]) # 'pto' (every 2nd character)
Slices are forgiving: going past the ends just trims to valid bounds (no error).
12s = "python" print(s[0:100]) # 'python'
Negative indices and reversing
You can mix negative indices in slices, and a negative step
walks backward.
123s = "python" print(s[-3:]) # 'hon' (last three) print(s[::-1]) # 'nohtyp' (reverse)
step
cannot be 0
. Leaving out step
implies 1
. Leaving out start
or stop
means "from the beginning" / "to the end".
1. What value will this code output?
2. What value will this code output?
3. Which statement raises an error for u = "hello"
?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Can you explain more about how slicing works with different step values?
What happens if I use negative indices in both start and stop for slicing?
Can you show more examples of string immutability?
Awesome!
Completion rate improved to 5
Indexing and Slicing
Svep för att visa menyn
Strings are sequences: each character has a position (an index). Python uses zero-based indexing, so the first character is at index 0
. You can take single characters with indexing and ranges of characters with slicing.
Indexing
Use square brackets with a single position.
123s = "python" print(s[0]) # 'p' (first character) print(s[5]) # 'n' (sixth character)
Negative indices count from the end.
123s = "python" print(s[-1]) # 'n' (last character) print(s[-2]) # 'o' (second from the end)
Indexing must hit an existing position; otherwise you get IndexError
.
12s = "python" print(s[10]) # IndexError: string index out of range
Also, strings are immutable, so you can read s[i]
but not assign to it.
12s = "python" s[0] = 'P' # TypeError: 'str' object does not support item assignment
Slicing
A slice uses start:stop:step
and returns a new string. stop
is exclusive (it's not included).
12345s = "python" print(s[1:4]) # 'yth' (indices 1,2,3) print(s[:4]) # 'pyth' (start defaults to 0) print(s[3:]) # 'hon' (stop defaults to len(s)) print(s[::2]) # 'pto' (every 2nd character)
Slices are forgiving: going past the ends just trims to valid bounds (no error).
12s = "python" print(s[0:100]) # 'python'
Negative indices and reversing
You can mix negative indices in slices, and a negative step
walks backward.
123s = "python" print(s[-3:]) # 'hon' (last three) print(s[::-1]) # 'nohtyp' (reverse)
step
cannot be 0
. Leaving out step
implies 1
. Leaving out start
or stop
means "from the beginning" / "to the end".
1. What value will this code output?
2. What value will this code output?
3. Which statement raises an error for u = "hello"
?
Tack för dina kommentarer!