Lists
Last updated on 2024-09-27 | Edit this page
Overview
Questions
- How can I store multiple items in a Python variable?
Objectives
- Create collections to work with in Python using lists.
- Write Python code to index, slice, and modify lists through assignment and method calls.
A list stores many values in a single structure.
The most popular kind of data collection in Python is the list. Lists have two primary important characteristics:
- They are mutable, i.e., they can be changed after they are created.
- They are heterogeneous, i.e., they can store values of many different types.
To create a new list, you can just put some values in square brackets with commas in between. Let’s create a short list of some amino acids.
OUTPUT
['alanine', 'leucine', 'cysteine', 'isoleucine']
We can use len()
to find out how many values are in a
list.
OUTPUT
4
Use an item’s index to fetch it from a list.
In the same way we used index numbers for strings, we can reference elements and slices in a list.
OUTPUT
First item: alanine
The first three items: ['alanine', 'leucine', 'cysteine']
Reassign list values with their index.
Use an index value along with your list variable to replace a value from the list.
PYTHON
print(f'List was: {amino_acids}')
amino_acids[0] = 'methionine'
print(f'List is now: {amino_acids}')
OUTPUT
List was: ['alanine', 'leucine', 'cysteine', 'isoleucine']
List is now: ['methionine', 'leucine', 'cysteine', 'isoleucine']
Character strings are immutable.
Unlike lists, we cannot change the characters in a string using its index value. In other words strings are immutable (cannot be changed in-place after creation), while lists are mutable: they can be modified in place. Python considers the string to be a single value with parts, not a collection of values.
ERROR
TypeError: 'str' object does not support item assignment
Appending items to a list lengthens it.
Use list_name.append
to add items to the end of a list.
In Python, we would call .append()
a method of the
list object. You can use the syntax of object.method()
to
call methods.
PYTHON
print(f'list was:{amino_acids}')
amino_acids.append('glutamine')
print(f'list is now: {amino_acids}')
OUTPUT
list was: ['methionine', 'leucine', 'cysteine', 'isoleucine']
list is now: ['methionine', 'leucine', 'cysteine', 'isoleucine', 'glutamine']
Lists may contain values of different types.
A single list may contain numbers, strings, and anything else (including other lists!). If you’re dealing with a list within a list you can continue to use the square bracket notation to reference specific items.
OUTPUT
First item in sublist: 10
Lists can contain lists.
Lists which contain other lists can be very useful. Imagine you poll your friends on their favorite pizza toppings.
OUTPUT
['pepperoni', 'mushroom', 'pineapple']
One of your friends likes Buffalo chicken pizza. Buffalo chicken is really three toppings combined: chicken, Buffalo sauce, and blue cheese. Here is how we can represent that in the list.
PYTHON
buffalo_chicken = ['chicken', 'buffalo sauce', 'blue cheese']
pizza_toppings.append(buffalo_chicken)
print(pizza_toppings)
OUTPUT
['pepperoni', 'mushroom', 'pineapple', ['chicken', 'buffalo sauce', 'blue cheese']]
We can access the items in the sublist as shown above:
OUTPUT
blue cheese
Use del
to remove items from a list entirely.
del list_name[index]
removes an item from a list and
shortens the list. Unlike .append()
, del
is
not a method, but a “statement” in Python. In the example below,
del
performs an “in-place” operation on a list of prime
numbers. This means that the primes
variable will be
reassigned when you use the del
statement, without needing
to use an assignment operator (e.g., primes = ...
) .
PYTHON
primes = [2, 3, 5, 7, 11]
print(f'primes before: {primes}')
del primes[4]
print(f'primes after: {primes}')
OUTPUT
primes before: [2, 3, 5, 7, 11]
primes after: [2, 3, 5, 7]
Lists: Length and Indexing
- Create a list named
colors
containing the strings ‘red’, ‘blue’, and ‘green’. - Print the length of the list.
- Print the first color using indexing.
List slicing
- Create a list of numbers defined as [1, 2, 3, 4, 5, 6].
- Print the first three items in the list using slicing.
- Print the last three items using slicing.
Another person has responded to your pizza poll. Their favorite pizza is Veggie (green pepper, onion, mushroom, broccoli, and olive).
- Create a variable that represents the toppings making up a veggie pizza.
- Add the veggie pizza to your pizza list.
- Print the updated pizza list.
- Use list indexing to print the second item that goes on a veggie pizza.
Here is the current pizza list to get you started:
PYTHON
pizza_toppings = ['pepperoni', 'mushroom', 'pineapple', ['chicken', 'buffalo sauce', 'blue cheese']]
print(pizza_toppings)
OUTPUT
['pepperoni', 'mushroom', 'pineapple', ['chicken', 'buffalo sauce', 'blue cheese']]
PYTHON
veggie = ['green pepper', 'onion', 'mushroom', 'broccoli', 'olive']
pizza_toppings.append(veggie)
print(pizza_toppings)
print(pizza_toppings[4][1])
OUTPUT
['pepperoni', 'mushroom', 'pineapple', ['chicken', 'buffalo sauce', 'blue cheese'], ['green pepper', 'onion', 'mushroom', 'broccoli', 'olive']]
onion
Fill in the blanks so that the program below produces the output
shown. In the first line we create a blank list by assigning
values = []
.
PYTHON
values = []
values.____(1)
values.____(3)
values.____(5)
print(f'first time: {values})
values = values[____]
print(f'second time: {values})
OUTPUT
first time: [1, 3, 5]
second time: [3, 5]
Run the following code on your own and answer the following questions.
- How does Python interpret a negative index value?
- If
resources
is a list, what doesdel resources[-1]
do?
OUTPUT
databases
- A negative index begins at the final element.
- It removes the final element of the list.
Key Points
- A list stores many values in a single structure.
- Use an item’s index to fetch it from a list.
- Lists’ values can be replaced by assigning to them.
- Appending items to a list lengthens it.
- Use
del
to remove items from a list entirely. - Lists may contain values of different types.
- Character strings can be indexed like lists.
- Character strings are immutable.
- Indexing beyond the end of the collection is an error.