Python Lists

Outside Resources:

TheNewBoston Video – Lists

w3schools Lists

Tutorials Point Interactive Tutorial – Lists

LearnPython.org Interactive Tutorial – Lists

Snakify.org Interactive Tutorial – Lists


Lists are similar to strings, because they are both collections of items. Strings are like a list of characters, but lists can contain any type of items.

Lists are surrounded with [square brackets]. Items are separated by commas. Examples:

veggies = ["carrot", "potato", "lettuce"]
squares = [1, 4, 9, 16, 25]

Notice that lists can store text items or integer items, or various other types.

Lists can be indexed and sliced using square brackets:

#index to return a single item
veggies[0]
veggies[-1]

#slice to return a smaller list of items
squares[2:4]

You can print an entire list or print a single item from a list.

print(veggies)
print(veggies[2])

Lists can be added together, similar to the way you concatenate strings using the “+” operator.

desserts = ["cake", "pie", "ice cream"]
foods = desserts + veggies
junkfood = ["chips", "candy"] + ["fries", "cookies"]

print(junkfood)

Creating an empty list:

animals = []

You can add an item to the list is with the append() list method:

places = ['France', 'China', 'Ghana']
places.append('New Zealand')
print(places)

Use the remove() method to remove an item:

cakes = ['carrot', 'cheese', 'spice', 'chocolate']
cakes.remove('carrot')

#note: the -= operator doesn't work with lists.

You can also use the “+=” operator to add a list to an existing list. Make sure you remember the square brackets:

animals += ['lion', 'mouse', 'shark']
animals += ['starfish', 'wolf']
animals += ['dolphin']
animals += ['emu']
print(animals)

If you forget the square brackets, you’ll either get an error, or an undesired result. Try it to see what happens.

#this line runs, but it doesn't do what you expect.
animals += "crocodile"
print(animals)

#this line will throw an error: try it and read the error message.
animals += 100

Because of the square bracket confusion, I recommend the append() method for adding items to a list.

Just like you did with strings, you can check the length of a list using the len() function:

print len(foods)
foods_count = len(foods)
if len(foods) > 0:
	print("This list has a non-zero length.")
else:
	print("This list is empty.")

Notice how you can use the len() function as part of a condition. Sometimes you don’t know if there are any items in a list, and you’ll get errors if you try something like foods[0] when there is actually no item in the list. In that case, check if the list is empty first, then index the list if it’s not empty.

If you want an easier way to check if a list is empty, Python provides something faster. When you use a list as a condition, it returns True if it contains any items, and it returns False if it’s empty. Example:

if foods:
	print("This list is NOT empty")
else:
	print("This list IS empty.")

In other words, if len(foods) > 0 is the same as if foods.
Non-empty collections are “truthy” in Python. Empty collections are “falsy.”

Try those previous examples with both empty lists and non-empty lists to see the difference.

List functions

Lists can run many functions on themselves. Examples:

numbers = [4, 10, 3, 7, 4, 2, 7, 4]

numbers.sort()
print(numbers)

#find the location (index) of a specific item
print(numbers.index(10))

#count how many times an item appears
print(numbers.count(4))

Checking if an item is in the list

You can use the in keyword to check if something is in a list. A phrase like “item in list” will evaluate to either True or False, so it is used in conditions.

spices = ['salt', 'paprika', 'pepper']

if 'pepper' in spices:
	print("Pepper is in the list.")
else:
	print("Pepper is NOT in the list.")

You can also use “not in” to check if an item isn’t in a list.

Try simply typing some “in” conditions into your Python console window to see the True/False results:
(These won’t seem to do anything if you type them in the code editor and run the program)

numbers = [1, 3, 7, 100]
5 in numbers
1 in numbers
"salad" in numbers
3 not in numbers
"3" in numbers

That last one will remind you that there’s a difference between 3 (int) and “3” (str).

Removing items

Lists have a list_name.remove() function for removing items. Note that the “-=” operator won’t work on lists.

fruits = ["apple", "kiwi", "mango", "kiwi"]
fruits.remove("kiwi")
print(fruits)

If your list contains more than one of the same item, only one instance will be removed, as you can see if you tried the previous example.

You can use the del (delete) keyword to delete an item number:

colors = ['orange', 'purple', 'black', 'pink']

#delete item #2:
del colors[2]

Lists (and other collections) also have a pop() method that can delete an item number:

names = ['Han', 'Leia', 'Luke', 'Chewie', 'Ben']

#delete item #0 from names:
names.pop(0)

Bonus: the pop() method returns the deleted item, so your code can use that information. For example, if you want to save the deleted items in a new list:

uneaten = ['apple', 'cake', 'chips', 'fig', 'chicken']
eaten = []

# Remove first two items from uneaten, 
# and add them to eaten:
eaten.append(uneaten.pop(0))
eaten.append(uneaten.pop(0))
print('Not eaten yet:', uneaten)
print('Already eaten: ', eaten)

Combining with variables

The examples above are using “literal” text (quoted text) in most cases, but you can also include the stored information from variables to a list. Remember not to use quotes around variable names.

favorite = "raspberry"
fruits.append(favorite)

Square brackets still go around the variable name when adding it to a list. You are adding a new list (containing one item) to the existing list. Try to think about the difference between square brackets and quotes: square brackets are for list items and index numbers, whereas quotes surround literal string (text) data.

The index of a string can be a variable that contains an integer:

x = 2
print(foods[x])
x += 1
print(foods[x])

Converting to list
Sometimes it’s useful to convert some other types of object into lists using the list() function.

# this is a dictionary (dict) object:
states = {'ND': 1889, 'IA': 1846, 'NY': 1778}

# this gives just the state abbreviations
keys = states.keys()

#convert that to a list instead
keys = list(states.keys())

#now you can use a list method such as sort()
keys.sort()
print(keys)

#Another example: convert string to list
word = "spaghetti"
list_word = list(word)
# Notice what this looks like when printed
print(list_word)

You can split a string into a list:

# split by spaces
s = "This is a sentence."
words = s.split(' ')

# split by commas
string_data = "spoon,fork,spork"
words = string_data.split(',')

You can also join a list of words together to make a string:

words = ['hearts', 'spades', 'clubs', 'diamonds']
# connect all the words with ", " between each word
text = ", ".join(words)

join() is a string function. Any string (such as “, “) can use itself to connect all of the items in a list and return the resulting string.