Sequence Types: list

The goal

Lists are mutable sequences, typically used to store collections of homogeneous items (where the precise degree of similarity will vary by application).​

Quote

Questions to David Rotermund

Example Lists

With homogeneous items:

primes = [2, 3, 5, 7]

collection_of_strings = [
    "AA",
    "BB",
    "CC",
    "DD",
    "EE",
    "FF",
    "GG",
    "HH",
]

A mixture of type:

def my_function(a):
    return a

my_favourite_things = [32, "sleep", my_function]

Indexing

collection_of_strings = [
    "AA",
    "BB",
    "CC",
    "DD",
    "EE",
    "FF",
    "GG",
    "HH",
]


print(collection_of_strings[0])  # -> AA
print(collection_of_strings[1])  # -> BB
print(collection_of_strings[-2])  # -> GG
print(collection_of_strings[-1])  # -> HH

Slicing

collection_of_strings = [
    "AA",
    "BB",
    "CC",
    "DD",
    "EE",
    "FF",
    "GG",
    "HH",
]


print(collection_of_strings[0:3])  # -> ['AA', 'BB', 'CC']
print(collection_of_strings[:3])  # -> ['AA', 'BB', 'CC']
print(collection_of_strings[3:])  # -> ['DD', 'EE', 'FF', 'GG', 'HH']
print(collection_of_strings[1:-1])  # -> ['BB', 'CC', 'DD', 'EE', 'FF', 'GG']
print(collection_of_strings[-3:])  # -> ['FF', 'GG', 'HH']
print(collection_of_strings[0:3])  # -> ['AA', 'BB', 'CC']
print(collection_of_strings[0:3:1])  # -> ['AA', 'BB', 'CC']
print(collection_of_strings[0:3:2])  # -> ['AA', 'CC']
print(collection_of_strings[::2])  # -> ['AA', 'CC', 'EE', 'GG']

Changing lists

collection_of_strings = [
    "AA",
    "BB",
    "CC",
    "DD",
    "EE",
    "FF",
    "GG",
    "HH",
]

collection_of_strings[3] = "II"
print(collection_of_strings)  # -> ['AA', 'BB', 'CC', 'II', 'EE', 'FF', 'GG', 'HH']
collection_of_strings[:3] = ["JJ", "KK", "LL"]
print(collection_of_strings)  # -> ['JJ', 'KK', 'LL', 'II', 'EE', 'FF', 'GG', 'HH']
collection_of_strings[:4] = [
    "MM",
    "NN",
    "OO",
    "PP",
]
print(collection_of_strings)  # -> ['MM', 'NN', 'OO', 'PP', 'EE', 'FF', 'GG', 'HH']

List functions

len() and sorted()

collection_of_strings = [
    "GG",
    "HH",
    "AA",
    "BB",
    "EE",
    "FF",
    "CC",
    "DD",
]


print(len(collection_of_strings))  # -> 8
print(sorted(collection_of_strings)) # -> ['AA', 'BB', 'CC', 'DD', 'EE', 'FF', 'GG', 'HH']

max(), min and sum()

primes = [2, 3, 5, 7]
print(sum(primes)) # -> 17
print(max(primes)) # -> 7
print(min(primes)) # -> 2

in

Is x in list?

collection_of_strings = [
    "AA",
    "BB",
    "CC",
    "DD",
    "EE",
    "FF",
    "GG",
    "HH",
]
print("AA" in collection_of_strings) # -> True
print("XX" in collection_of_strings) # -> False
print("AA" not in collection_of_strings) # -> False
print("XX" not in collection_of_strings) # -> True

Index

Which index id has an element in a list?

collection_of_strings = [
    "AA",
    "BB",
    "CC",
    "DD",
    "EE",
    "FF",
    "GG",
    "HH",
]

print(collection_of_strings.index("CC"))  # -> 2
print(collection_of_strings.index("XX"))  # -> ValueError: 'XX' is not in list

Maybe we don’t want to start in the beginning of the list or don’t want to search until the end of the list:

collection_of_strings = [
    "AA",
    "BB",
    "CC",
    "DD",
    "EE",
    "BB",
    "FF",
    "GG",
    "BB",
    "HH",
]
print(collection_of_strings.index("BB"))  # -> 1
# At or after 2
print(collection_of_strings.index("BB", 2))  # -> 5
# Before 6
print(collection_of_strings.index("BB", 2, 6)) # -> 5
# Before 4
print(collection_of_strings.index("BB", 2, 4))  # ValueError: 'BB' is not in list

append(), pop(), and remove()

collection_of_strings = [
    "AA",
    "BB",
    "BB",
    "CC",
    "DD",
    "EE",
    "FF",
    "GG",
    "HH",
]

collection_of_strings.append("II")
print(
    collection_of_strings
)  # -> ['AA', 'BB', 'BB', 'CC', 'DD', 'EE', 'FF', 'GG', 'HH', 'II']
print(collection_of_strings.pop())  # -> II
print(
    collection_of_strings
)  # -> ['AA', 'BB', 'BB', 'CC', 'DD', 'EE', 'FF', 'GG', 'HH']

collection_of_strings.remove("BB")
print(collection_of_strings)  # -> ['AA', 'BB', 'CC', 'DD', 'EE', 'FF', 'GG', 'HH']

collection_of_strings.remove("BB")
print(collection_of_strings)  # -> ['AA', 'BB', 'CC', 'DD', 'EE', 'FF', 'GG', 'HH']

collection_of_strings.remove("BB")
print(collection_of_strings)  # -> ValueError: list.remove(x): x not in list

del and insert()

Insert and delete an element.

collection_of_strings = []
collection_of_strings.append("BB")
collection_of_strings.append("CC")
collection_of_strings.append("DD")
print(collection_of_strings)  # -> ['BB', 'CC', 'DD']

collection_of_strings.insert(0, "AA")
print(collection_of_strings)  # -> ['AA', 'BB', 'CC', 'DD']

del collection_of_strings[1]
print(collection_of_strings)  # -> ['AA', 'CC', 'DD']

+

Concatenating lists.

collection_of_strings_a = [
    "AA",
    "BB",
    "CC",
    "DD",
]
collection_of_strings_b = [
    "EE",
    "FF",
    "GG",
    "HH",
]
print(collection_of_strings_a)  # -> ['AA', 'BB', 'CC', 'DD']
print(collection_of_strings_b)  # -> ['EE', 'FF', 'GG', 'HH']
collection_of_strings = collection_of_strings_a + collection_of_strings_b

print(collection_of_strings)  # -> ['AA', 'BB', 'CC', 'DD', 'EE', 'FF', 'GG', 'HH']

*

Repeat a list several times.

collection_of_strings = [
    "AA",
    "BB",
    "CC",
]
print(3 * collection_of_strings) # -> ['AA', 'BB', 'CC', 'AA', 'BB', 'CC', 'AA', 'BB', 'CC']
print(collection_of_strings * 3) # -> ['AA', 'BB', 'CC', 'AA', 'BB', 'CC', 'AA', 'BB', 'CC']

count()

How often does an element occur in the list?

collection_of_strings = [
    "AA",
    "AA",
    "BB",
    "BB",
    "BB",
    "CC",
    "DD",
    "EE",
    "FF",
    "GG",
    "HH",
]
print(collection_of_strings.count("AA"))  # -> 2
print(collection_of_strings.count("BB"))  # -> 3
print(collection_of_strings.count("CC"))  # -> 1

Additional commands

   
list.append(x)​  
list.extend(iterable)​  
list.insert(i, x)​  
list.remove(x)
list.pop([i])
list.clear()​  
list.index(x[, start[, end]])​  
list.count(x)​  
list.sort(*, key=None, reverse=False)​  
list.reverse()
list.copy()​  

Common Sequence Operations

Operation​ Result​
x in s​ True if an item of s is equal to x, else False​
x not in s​ False if an item of s is equal to x, else True​
s + t​ the concatenation of s and t​
s * n or n * s​ equivalent to adding s to itself n times​
s[i] ​ith item of s, origin 0​
s[i:j] ​slice of s from i to j​
s[i:j:k] ​slice of s from i to j with step k​
len(s)​ length of s​
min(s)​ smallest item of s​
max(s)​ largest item of s​
s.index(x[, i[, j]])​ index of the first occurrence of x in s (at or after index i and before index j)​
s.count(x)​ total number of occurrences of x in s​

The source code is Open Source and can be found on GitHub.