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"
?
Thanks for your feedback!
Ask AI
Ask AI
Ask anything or try one of the suggested questions to begin our chat
Awesome!
Completion rate improved to 5
Indexing and Slicing
Swipe to show menu
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"
?
Thanks for your feedback!