0
0
Pythonprogramming~10 mins

List indexing and slicing in Python - Step-by-Step Execution

Choose your learning style9 modes available
Concept Flow - List indexing and slicing
Start with a list
Choose index or slice
If index: get single element
If slice: get sublist
Return result
End
You start with a list, pick an index or a slice, then get either one element or a sublist returned.
Execution Sample
Python
my_list = [10, 20, 30, 40, 50]
print(my_list[1])
print(my_list[1:4])
This code gets the element at index 1 and a slice from index 1 up to 4 (not including 4).
Execution Table
StepExpressionEvaluationResultExplanation
1my_list[1]Index 120Get element at index 1 (second element)
2my_list[1:4]Slice from 1 to 3[20, 30, 40]Get elements from index 1 up to 4 (excluding 4)
3my_list[-1]Index -150Get last element using negative index
4my_list[:3]Slice from start to 2[10, 20, 30]Get first three elements
5my_list[3:]Slice from 3 to end[40, 50]Get elements from index 3 to end
6my_list[::2]Slice with step 2[10, 30, 50]Get every second element starting at index 0
7my_list[4:1:-1]Slice backwards[50, 40, 30]Get elements from index 4 down to 2 in reverse
8my_list[5]Index 5ErrorIndexError: index out of range, list has 5 elements (0-4)
9my_list[1:10]Slice from 1 to 9[20, 30, 40, 50]Slice stops at list end, no error
💡 IndexError occurs if index is out of range; slices gracefully handle out-of-range end.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4After Step 5After Step 6After Step 7After Step 8After Step 9
my_list[10, 20, 30, 40, 50][10, 20, 30, 40, 50][10, 20, 30, 40, 50][10, 20, 30, 40, 50][10, 20, 30, 40, 50][10, 20, 30, 40, 50][10, 20, 30, 40, 50][10, 20, 30, 40, 50][10, 20, 30, 40, 50][10, 20, 30, 40, 50]
Key Moments - 3 Insights
Why does my_list[1:4] include index 1 but not index 4?
Because slicing in Python includes the start index but excludes the end index, so it takes elements at 1, 2, and 3 only (see execution_table row 2).
What happens if I use a negative index like my_list[-1]?
Negative indexes count from the end, so -1 means the last element (see execution_table row 3).
Why does my_list[5] cause an error but my_list[1:10] does not?
Indexing with 5 is out of range and causes an error, but slicing stops at the list end without error (see execution_table rows 8 and 9).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the result of my_list[3:] at step 5?
A[40, 50]
B[30, 40]
C[10, 20, 30]
D[50]
💡 Hint
Check the 'Result' column in execution_table row 5.
At which step does an IndexError occur?
AStep 2
BStep 8
CStep 4
DStep 9
💡 Hint
Look for 'Error' in the 'Result' column in execution_table.
If we change my_list[1:4] to my_list[1:5], what would be the result?
A[20, 30, 40]
B[10, 20, 30, 40]
C[20, 30, 40, 50]
DIndexError
💡 Hint
Slicing includes start index but excludes end index; see execution_table row 9 for similar slice.
Concept Snapshot
List indexing: my_list[index] gets one element.
Negative index counts from end (-1 last).
Slicing: my_list[start:end] gets sublist from start up to but not including end.
Omitting start or end means from start or to end.
Slices handle out-of-range gracefully; indexing does not.
Use step in slicing: my_list[start:end:step].
Full Transcript
This lesson shows how Python lists let you get single elements or parts of the list using indexing and slicing. Indexing uses a single number inside square brackets to get one element. Negative indexes count from the end. Slicing uses two numbers separated by a colon to get a sublist from the start index up to but not including the end index. You can omit start or end to slice from the beginning or to the end. Slices do not cause errors if the end is beyond the list length, but indexing does. You can also add a step to slice every nth element or reverse the list. The execution table shows examples and results step by step.