Lesson 12: Lists: Many Items, Plus Indexing and Append


What you'll learn in this lesson


One variable, many values

So far every variable has held one value: one name, one number, one string. But real programs deal in groups — a class of students, a week of temperatures, a shopping list. A list stores many values in a single variable, in order, inside square brackets, separated by commas:

fruits = ["apple", "banana", "cherry"]
print(fruits)

Output:

['apple', 'banana', 'cherry']

Python prints the whole list back, brackets and all, so you can see exactly what is inside. The items can be any mix of kinds — strings, numbers, booleans — though in practice a list usually holds one kind of thing, because that keeps the code readable.


Reading items by position

Like string characters in Lesson 6, list items are counted from 0. The first item is position 0, the second is position 1, and so on:

fruits = ["apple", "banana", "cherry"]
print(fruits[0])
print(fruits[1])
print(fruits[2])

Output:

apple
banana
cherry

Asking for a position past the end gives an error, just as with strings — there is no fourth fruit in a three-item list. A handy shortcut: position -1 means the last item, -2 the second-to-last, and so on:

fruits = ["apple", "banana", "cherry"]
print(fruits[-1])

Output:

cherry

len() counts a list's items, exactly as it counts a string's characters:

fruits = ["apple", "banana", "cherry"]
print(len(fruits))

Output:

3

Changing a list: append and replace

Lists are changeable — unlike strings, you can alter them after making them. The two changes beginners use most are adding to the end and replacing one item:

fruits = ["apple", "banana", "cherry"]
fruits.append("orange")
print(fruits)
fruits[1] = "blueberry"
print(fruits)

Output:

['apple', 'banana', 'cherry', 'orange']
['apple', 'blueberry', 'cherry', 'orange']

append() sticks a new item on the end. fruits[1] = "blueberry" replaces whatever was at position 1 — the same bracket notation you use to read an item, now on the left of the = sign, which means "store" (Lesson 4). Read the second output carefully: the order of the other items did not change; only position 1 did.


Looping through a list

Lists and loops (Lesson 10) belong together. A for loop walks a list one item at a time, so you can do something with every item without knowing in advance how many there are:

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print("I like " + fruit)

Output:

I like apple
I like banana
I like cherry

The loop variable fruit takes each value in turn: first "apple", then "banana", then "cherry". If you later append "orange" to the list, the same loop prints four lines with no other change. That is the real power of lists: code that works for three items works for three hundred, because the loop adapts to the list.


Hands-on exercise

  1. Make a list of four of your favorite foods and print the whole list, then print just the first item.
  2. Print how many items your list has with len().
  3. Append a fifth food, print the list again, and confirm it grew.
  4. Replace the second item with something else and print the list.
  5. Write a loop that prints "I like ..." for every item in your list.

Quick quiz

  1. What is a list, and what brackets does it use?
  2. In ["apple", "banana", "cherry"], what is at position 0, and what is at position -1?
  3. What does len() do to a list?
  4. What is the difference between fruits.append("orange") and fruits[1] = "blueberry"?
  5. Why does a loop over a list still work if the list later grows?

Answer key: 1. Many values stored in order in a single variable, inside square brackets. 2. Position 0 is "apple"; position -1 is "cherry", the last item. 3. It counts how many items the list has. 4. append() adds a new item at the end; fruits[1] = ... replaces the item already at position 1. 5. Because the loop walks whatever items are in the list at run time, however many there are.


Key takeaways

Next lesson: Dictionaries.


Slides

Work through the slides with Helio's narration, or download them:

Open the slidesDownload PowerPointDownload PDF

Try it yourself

Run the lesson's example with real Python, right in your browser (Python loads from the internet, so you need to be online).

Open the demo

Practice file

Download lesson12-practice.pyDownload the solution

# Lesson 12: Lists — Many Items, Indexing, Append
# WHAT TO DO: A list stores many values in order, inside square
# brackets. Positions start at 0. This list of favorite foods has one
# placeholder item. Fill in line 11: replace TODO with a real food
# of your own, keeping it inside quotes.
# HINT: Only change the word TODO. The rest of the program already
# prints the list, its first item, how many items it has, adds a fifth
# food with append(), and prints "I like ..." for every item.
# Run with F5 in IDLE. You are done when no TODO appears in the output.

foods = ["pizza", "TODO", "pasta", "salad"]  # <-- CHANGE THIS LINE
print(foods)
print(foods[0])
print(len(foods))
foods.append("soup")
print(foods)
for food in foods:
    print("I like " + food)

Save the file as lesson12-practice.py and run it with F5 in IDLE. On a Mac, if F5 does nothing, use Run, then Run Module, from the menu.

Check yourself

Five quick questions on this lesson. Take the Lesson 12 quiz

Want graded quizzes and progress tracking?

Enroll free in the full course — same 17 lessons, with your progress saved. Free, no payment.