Start learning free

LESSON 97 OF 410 · LISTS I

Accessing list elements in Python

Lesson Read the full explanation

Lists are ordered, meaning each element has a numbered position known as its index. We access a list element by referring to its index number.

Lists use zero-based indexing, so the first element in a list has an index of 0, the second element has an index of 1, etc.

We’re using bracket notation ([]) with the index after the name of the list to access the element:

myList = ["Hello world!", 32, False]

print(myList[0]) # Output: "Hello world!"
print(myList[1]) # Output: 32
print(myList[2]) # Output: False

Assignment
Follow the Coding Tutorial and let's play with some arrays.


Hint
Look at the examples above if you get stuck.


STEP 1 OF 3
    Ctrl + Enter to check

    PYTHON · LISTS I

    Accessing Elements in Python, explained

    Accessing List Elements in Python: How Indexing Works

    Storing data in a list is only half the job — you also need to get specific items back out. Python's index system gives every element a numbered position so you can pinpoint exactly what you need. Whether you're pulling a player's score from a leaderboard or retrieving a file name from a list of results, indexing is how you do it.

    Zero-Based Indexing: Counting From Zero

    Python (like most programming languages) numbers list positions starting at 0, not 1. The first item is at index 0, the second at index 1, and so on. Use square brackets after the list name to access any position:

    players = ["Alice", "Bob", "Charlie", "Diana"]
    
    print(players[0])   # Alice    (1st item)
    print(players[1])   # Bob      (2nd item)
    print(players[2])   # Charlie  (3rd item)
    print(players[3])   # Diana    (4th item)
    

    A quick mental model: the index tells you how many steps from the start. Index 0 means "0 steps from the start" — the first item.

    Negative Indexing: Counting From the End

    Python also supports negative indices to count backwards from the end. -1 is the last item, -2 is second to last, and so on — no need to know the list length:

    players = ["Alice", "Bob", "Charlie", "Diana"]
    
    print(players[-1])   # Diana    (last item)
    print(players[-2])   # Charlie  (second to last)
    print(players[-4])   # Alice    (same as index 0)
    

    Using Indexed Values in Expressions

    An indexed element works just like any other value — you can print it, assign it to a variable, do math with it, or pass it to a function:

    scores = [95, 82, 74, 88, 91]
    
    # Assign to a variable:
    top_score = scores[0]
    print("Top score:", top_score)   # Top score: 95
    
    # Use in a calculation:
    average = (scores[0] + scores[1] + scores[2]) / 3
    print("Average:", average)       # Average: 83.67
    
    # Pass to a function:
    print(len(scores))   # 5
    

    Real-World Example: Reading Data From a Record

    # A user record stored as a list: [name, age, city, is_premium]
    user = ["Maria", 28, "Chicago", True]
    
    name = user[0]
    age  = user[1]
    city = user[2]
    
    print(f"Welcome, {name}! You're {age} years old from {city}.")
    # Welcome, Maria! You're 28 years old from Chicago.
    
    if user[3]:
        print("You have premium access.")
    

    List Slicing: Grabbing Multiple Elements at Once

    Slicing extracts a sub-list between two indices. The syntax is list[start:stop] — it includes start but excludes stop:

    scores = [95, 82, 74, 88, 91, 67]
    
    top_3 = scores[0:3]    # [95, 82, 74]
    last_2 = scores[-2:]   # [91, 67]
    middle = scores[1:4]   # [82, 74, 88]
    
    print(top_3)    # [95, 82, 74]
    print(last_2)   # [91, 67]
    

    Common Mistakes to Avoid

    • IndexError — index out of range: Accessing an index that doesn't exist crashes the program. A list with 4 items has valid indices 0–3 (and -1 to -4).
    • Off-by-one errors: Forgetting that the first item is index 0, not 1, is the most common beginner mistake.
    • Modifying a list and then indexing it: If items are added or removed, the indices shift — always re-check your assumptions.
    items = ["a", "b", "c"]
    
    # Safe access — check length first:
    if len(items) > 3:
        print(items[3])
    else:
        print("Index 3 doesn't exist in this list")
    

    Key Takeaways

    • Python lists use zero-based indexing: first item is list[0], last is list[-1].
    • Access any element with list[index] — the result is a normal value you can use anywhere.
    • Slice a range of items with list[start:stop].
    • Always make sure the index exists — accessing an out-of-range index raises IndexError.

    What to Learn Next

    With indexing mastered, explore for loops to iterate through every item in a list automatically, and list methods like append(), remove(), and sort() to manipulate lists dynamically.

    Keep going with PythonAbout 340 step-by-step lessons, from your first line of code to coding interviews. Free to start.
    Start learning free