5b6371fd60
Signed-off-by: David Rotermund <54365609+davrot@users.noreply.github.com> |
||
---|---|---|
.. | ||
README.md |
Sequence Types: list
{:.no_toc}
* TOC {:toc}The goal
Lists are mutable sequences, typically used to store collections of homogeneous items (where the precise degree of similarity will vary by application).
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 |