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.26
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!