10.python Lists
10.python Lists
10.python Lists
There are four collection data types in the Python programming language:
*Set items are unchangeable, but you can remove and/or add items whenever you like.
**As of Python version 3.7, dictionaries are ordered. In Python 3.6 and earlier, dictionaries are
unordered.
When choosing a collection type, it is useful to understand the properties of that type. Choosing
the right type for a particular data set could mean retention of meaning, and, it could mean an
increase in efficiency or security.
Python Lists
List
Example
Create a List:
List Items
Ordered
When we say that lists are ordered, it means that the items have a defined order, and that
order will not change.
If you add new items to a list, the new items will be placed at the end of the list.
Changeable
The list is changeable, meaning that we can change, add, and remove items in a list after
it has been created.
Allow Duplicates
Since lists are indexed, lists can have items with the same value:
Example
To determine how many items a list has, use the len() function:
Example
Example
Example
type()
From Python's perspective, lists are defined as objects with the data type 'list':
<class 'list'>
Example
Example
Access Items
List items are indexed and you can access them by referring to the index number:
Example
Negative Indexing
Example
Range of Indexes
You can specify a range of indexes by specifying where to start and where to end the
range.
When specifying a range, the return value will be a new list with the specified items.
Example
Note: The search will start at index 2 (included) and end at index 5 (not included).
By leaving out the start value, the range will start at the first item:
By leaving out the start value, the range will start at the first item:
Example
This example returns the items from the beginning to, but NOT including, "kiwi":
By leaving out the end value, the range will go on to the end of the list:
Example
Specify negative indexes if you want to start the search from the end of the list:
Example
This example returns the items from "orange" (-4) to, but NOT including "mango" (-1):
Example
To change the value of items within a specific range, define a list with the new values,
and refer to the range of index numbers where you want to insert the new values:
Example
Change the values "banana" and "cherry" with the values "blackcurrant" and
"watermelon":
If you insert more items than you replace, the new items will be inserted where you
specified, and the remaining items will move accordingly:
Example
Example
Change the second and third value by replacing it with one value:
Insert Items
To insert a new list item, without replacing any of the existing values, we can use the
insert() method.
The insert() method inserts an item at the specified index:
Example
Append Items
To add an item to the end of the list, use the append() method:
Example
To append elements from another list to the current list, use the extend() method.
Example
The extend() method does not have to append lists, you can add any iterable object
(tuples, sets, dictionaries etc.).
Example
Example
Remove "banana":
Example
If you do not specify the index, the pop() method removes the last item.
Example
Example
Example
Example
You can loop through the list items by using a for loop:
Example
You can also loop through the list items by referring to their index number.
Example
You can loop through the list items by using a while loop.
Use the len() function to determine the length of the list, then start at 0 and loop your way
through the list items by refering to their indexes.
Example
Print all items, using a while loop to go through all the index numbers
Learn more about while loops in our Python While Loops Chapter.
List Comprehension offers the shortest syntax for looping through lists:
Example
A short hand for loop that will print all items in a list:
List comprehension offers a shorter syntax when you want to create a new list based on
the values of an existing list.
Example:
Based on a list of fruits, you want a new list, containing only the fruits with the letter "a" in the
name.
Without list comprehension you will have to write a for statement with a conditional test inside:
Example
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []
for x in fruits:
if "a" in x:
newlist.append(x)
print(newlist)
With list comprehension you can do all that with only one line of code:
Example
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
print(newlist)
The Syntax
newlist = [expression for item in iterable if condition == True]
The return value is a new list, leaving the old list unchanged.
Condition
The condition is like a filter that only accepts the items that valuate to True.
Example
The condition if x != "apple" will return True for all elements other than "apple", making the
new list contain all fruits except "apple".
Example
With no if statement:
Iterable
The iterable can be any iterable object, like a list, tuple, set etc.
Example
Example
The expression is the current item in the iteration, but it is also the outcome, which you
can manipulate before it ends up like a list item in the new list:
Example
Example
The expression can also contain conditions, not like a filter, but as a way to manipulate
the outcome:
Example
List objects have a sort() method that will sort the list alphanumerically, ascending, by
default:
Example
Example
Sort Descending
Example
Example
You can also customize your own function by using the keyword argument key = function.
The function will return a number that will be used to sort the list (the lowest number first):
Example
def myfunc(n):
return abs(n - 50)
By default the sort() method is case sensitive, resulting in all capital letters being sorted
before lower case letters:
Example
Luckily we can use built-in functions as key functions when sorting a list.
Example
Reverse Order
What if you want to reverse the order of a list, regardless of the alphabet.
The reverse() method reverses the current sorting order of the elements.
Example
Copy a List
You cannot copy a list simply by typing list2 = list1, because: list2 will only be a
reference to list1, and changes made in list1 will automatically also be made in list2.
There are ways to make a copy, one way is to use the built-in List method copy().
Example
Example
There are several ways to join, or concatenate, two or more lists in Python.
One of the easiest ways are by using the + operator.
Example
Another way to join two lists is by appending all the items from list2 into list1, one by
one:
Example
for x in list2:
list1.append(x)
print(list1)
you can use the extend() method, which purpose is to add elements from one list to
another list:
Example
list1.extend(list2)
print(list1)
Python has a set of built-in methods that you can use on lists.
Method Description
append(
Adds an element at the end of the list
)
clear() Removes all the elements from the list
copy() Returns a copy of the list
count() Returns the number of elements with the specified value
extend() Add the elements of a list (or any iterable), to the end of the current list
index() Returns the index of the first element with the specified value
insert() Adds an element at the specified position
pop() Removes the element at the specified position
remove() Removes the item with the specified value
reverse() Reverses the order of the list
sort() Sorts the list
Tuple
Example
Create a Tuple:
Tuple Items
Ordered
When we say that tuples are ordered, it means that the items have a defined order, and
that order will not change.
Unchangeable
Tuples are unchangeable, meaning that we cannot change, add or remove items after the
tuple has been created.
Allow Duplicates
Since tuples are indexed, they can have items with the same value:
Example
Tuple Length
To determine how many items a tuple has, use the len() function:
Example
To create a tuple with only one item, you have to add a comma after the item, otherwise
Python will not recognize it as a tuple.
Example
thistuple = ("apple",)
print(type(thistuple))
#NOT a tuple
thistuple = ("apple")
print(type(thistuple))
Example
Example
From Python's perspective, tuples are defined as objects with the data type 'tuple':
<class 'tuple'>
Example
Example
You can access tuple items by referring to the index number, inside square brackets:
Example
Negative Indexing
-1 refers to the last item, -2 refers to the second last item etc.
Example
Range of Indexes
You can specify a range of indexes by specifying where to start and where to end the
range.
When specifying a range, the return value will be a new tuple with the specified items.
Example
Specify negative indexes if you want to start the search from the end of the tuple:
Example
This example returns the items from index -4 (included) to index -1 (excluded)
Example
Tuples are unchangeable, meaning that you cannot change, add, or remove items once the
tuple is created.
Once a tuple is created, you cannot change its values. Tuples are unchangeable, or
immutable as it also is called.
But there is a workaround. You can convert the tuple into a list, change the list, and
convert the list back into a tuple.
Example
print(x)
Add Items
Since tuples are immutable, they do not have a build-in append() method, but there are
other ways to add items to a tuple.
1. Convert into a list: Just like the workaround for changing a tuple, you can convert it into a
list, add your item(s), and convert it back into a tuple.
Example
Convert the tuple into a list, add "orange", and convert it back into a tuple:
Example
Create a new tuple with the value "orange", and add that tuple:
print(thistuple)
Note: When creating a tuple with only one item, remember to include a comma after the item,
otherwise it will not be identified as a tuple.
Remove Items
Tuples are unchangeable, so you cannot remove items from it, but you can use the same
workaround as we used for changing and adding tuple items:
Example
Convert the tuple into a list, remove "apple", and convert it back into a tuple:
Example
When we create a tuple, we normally assign values to it. This is called "packing" a tuple:
Example
Packing a tuple:
But, in Python, we are also allowed to extract the values back into variables. This is called
"unpacking":
Example
Unpacking a tuple:
print(green)
print(yellow)
print(red)
Note: The number of variables must match the number of values in the tuple, if not, you must
use an asterisk to collect the remaining values as a list.
Using Asterisk*
If the number of variables is less than the number of values, you can add an * to the
variable name and the values will be assigned to the variable as a list:
Example
print(green)
print(yellow)
print(red)
If the asterisk is added to another variable name than the last, Python will assign values to
the variable until the number of values left matches the number of variables left.
Example
print(green)
print(tropic)
print(red)
You can loop through the tuple items by using a for loop.
Example
You can also loop through the tuple items by referring to their index number.
Example
You can loop through the list items by using a while loop.
Use the len() function to determine the length of the tuple, then start at 0 and loop your
way through the tuple items by refering to their indexes.
Remember to increase the index by 1 after each iteration.
Example
Print all items, using a while loop to go through all the index numbers:
Example
Multiply Tuples
If you want to multiply the content of a tuple a given number of times, you can use the *
operator:
Example
print(mytuple)
Tuple Methods
Python has two built-in methods that you can use on tuples.
Method Description
Searches the tuple for a specified value and returns the position of where it
index()
was found
Set
Create a Set:
Set Items
Set items are unordered, unchangeable, and do not allow duplicate values.
Unordered
Unordered means that the items in a set do not have a defined order.
Set items can appear in a different order every time you use them, and cannot be referred
to by index or key.
Unchangeable
Set items are unchangeable, meaning that we cannot change the items after the set has
been created.
Once a set is created, you cannot change its items, but you can remove items and add new
items.
Example
print(thisset)
Get the Length of a Set
To determine how many items a set has, use the len() function.
Example
print(len(thisset))
Example
Example
type()
From Python's perspective, sets are defined as objects with the data type 'set':
<class 'set'>
Example
Example
Access Items
Example
for x in thisset:
print(x)
Example
print("banana" in thisset)
Change Items
Once a set is created, you cannot change its items, but you can add new items.
Add Items
Once a set is created, you cannot change its items, but you can add new items.
To add one item to a set use the add() method.
Example
thisset.add("orange")
print(thisset)
Add Sets
To add items from another set into the current set, use the update() method.
Example
thisset.update(tropical)
print(thisset)
The object in the update() method does not have to be a set, it can be any iterable object
(tuples, lists, dictionaries etc.).
Example
thisset.update(mylist)
print(thisset)
Remove Item
thisset.remove("banana")
print(thisset)
Note: If the item to remove does not exist, remove() will raise an error.
Example
thisset.discard("banana")
print(thisset)
Note: If the item to remove does not exist, discard() will NOT raise an error.
You can also use the pop() method to remove an item, but this method will remove the
last item. Remember that sets are unordered, so you will not know what item that gets
removed.
Example
x = thisset.pop()
print(x)
print(thisset)
Note: Sets are unordered, so when using the pop() method, you do not know which item
that gets removed.
Example
thisset.clear()
print(thisset)
Example
del thisset
print(thisset)
Loop Items
You can loop through the set items by using a for loop:
Example
for x in thisset:
print(x)
Example
The union() method returns a new set with all items from both sets:
set1 = {"a", "b" , "c"}
set2 = {1, 2, 3}
set3 = set1.union(set2)
print(set3)
Example
set1.update(set2)
print(set1)
Note: Both union() and update() will exclude any duplicate items.
The intersection_update() method will keep only the items that are present in both sets.
Example
x.intersection_update(y)
print(x)
The intersection() method will return a new set, that only contains the items that are
present in both sets.
Example
Return a set that contains the items that exist in both set x, and set y:
z = x.intersection(y)
print(z)
The symmetric_difference_update() method will keep only the elements that are NOT
present in both sets.
Example
x.symmetric_difference_update(y)
print(x)
The symmetric_difference() method will return a new set, that contains only the elements
that are NOT present in both sets.
Example
Return a set that contains all items from both sets, except items that are present in both:
z = x.symmetric_difference(y)
print(z)
Set Methods
Python has a set of built-in methods that you can use on sets.
Method Description
difference() Returns a set containing the difference between two or more sets
Removes the items in this set that are also included in another,
difference_update()
specified set
Removes the items in this set that are not present in other,
intersection_update()
specified set(s)
symmetric_difference_update() inserts the symmetric differences from this set and another
update() Update the set with the union of this set and others
Python Dictionaries
Dictionary
Example
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(thisdict)
Dictionary Items
Dictionary items are ordered, changeable, and does not allow duplicates.
Dictionary items are presented in key:value pairs, and can be referred to by using the key
name.
Example
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(thisdict["brand"])
Ordered or Unordered?
As of Python version 3.7, dictionaries are ordered. In Python 3.6 and earlier, dictionaries
are unordered.
When we say that dictionaries are ordered, it means that the items have a defined order,
and that order will not change.
Unordered means that the items does not have a defined order, you cannot refer to an
item by using an index.
Changeable
Dictionaries are changeable, meaning that we can change, add or remove items after the
dictionary has been created.
Example
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964,
"year": 2020
}
print(thisdict)
Dictionary Length
To determine how many items a dictionary has, use the len() function:
Example
print(len(thisdict))
Example
type()
From Python's perspective, dictionaries are defined as objects with the data type 'dict':
<class 'dict'>
Example
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
print(type(thisdict))
Accessing Items
You can access the items of a dictionary by referring to its key name, inside square brackets:
Example
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = thisdict["model"]
There is also a method called get() that will give you the same result:
Example
Get Keys
The keys() method will return a list of all the keys in the dictionary.
Example
x = thisdict.keys()
The list of the keys is a view of the dictionary, meaning that any changes done to the dictionary
will be reflected in the keys list.
Example
Add a new item to the original dictionary, and see that the keys list gets updated as well:
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.keys()
car["color"] = "white"
Get Values
The values() method will return a list of all the values in the dictionary.
Example
x = thisdict.values()
The list of the values is a view of the dictionary, meaning that any changes done to the
dictionary will be reflected in the values list.
Example
Make a change in the original dictionary, and see that the values list gets updated as well:
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.values()
car["year"] = 2020
Example
Add a new item to the original dictionary, and see that the values list gets updated as well:
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.values()
car["color"] = "red"
The items() method will return each item in a dictionary, as tuples in a list.
Example
x = thisdict.items()
The returned list is a view of the items of the dictionary, meaning that any changes done
to the dictionary will be reflected in the items list.
Example
Make a change in the original dictionary, and see that the items list gets updated as well:
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.items()
car["year"] = 2020
Example
Add a new item to the original dictionary, and see that the items list gets updated as well:
car = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
x = car.items()
print(x) #before the change
car["color"] = "red"
Example
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
if "model" in thisdict:
print("Yes, 'model' is one of the keys in the thisdict dictionary")
Change Values
You can change the value of a specific item by referring to its key name:
Example
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict["year"] = 2018
Update Dictionary
The update() method will update the dictionary with the items from the given argument.
Example
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict.update({"year": 2020})
Adding Items
Adding an item to the dictionary is done by using a new index key and assigning a value to it:
Example
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict["color"] = "red"
print(thisdict)
Update Dictionary
The update() method will update the dictionary with the items from a given argument. If the item
does not exist, the item will be added.
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict.update({"color": "red"})
Removing Items
Example
The pop() method removes the item with the specified key name:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict.pop("model")
print(thisdict)
Example
The popitem() method removes the last inserted item (in versions before 3.7, a random item is
removed instead):
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict.popitem()
print(thisdict)
Example
The del keyword removes the item with the specified key name:
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
del thisdict["model"]
print(thisdict)
Example
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
del thisdict
print(thisdict) #this will cause an error because "thisdict" no longer exists.
Example
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
thisdict.clear()
print(thisdict)
for x in thisdict:
print(x)
Example
for x in thisdict:
print(thisdict[x])
Example
You can also use the values() method to return values of a dictionary:
for x in thisdict.values():
print(x)
Example
You can use the keys() method to return the keys of a dictionary:
for x in thisdict.keys():
print(x)
Example
Loop through both keys and values, by using the items() method:
for x, y in thisdict.items():
print(x, y)
Copy a Dictionary
You cannot copy a dictionary simply by typing dict2 = dict1, because: dict2 will only be
a reference to dict1, and changes made in dict1 will automatically also be made in dict2.
There are ways to make a copy, one way is to use the built-in Dictionary method copy().
Example
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
mydict = thisdict.copy()
print(mydict)
Example
thisdict = {
"brand": "Ford",
"model": "Mustang",
"year": 1964
}
mydict = dict(thisdict)
print(mydict)
Nested Dictionaries
Example
myfamily = {
"child1" : {
"name" : "Emil",
"year" : 2004
},
"child2" : {
"name" : "Tobias",
"year" : 2007
},
"child3" : {
"name" : "Linus",
"year" : 2011
}
}
Example
Create three dictionaries, then create one dictionary that will contain the other three dictionaries:
child1 = {
"name" : "Emil",
"year" : 2004
}
child2 = {
"name" : "Tobias",
"year" : 2007
}
child3 = {
"name" : "Linus",
"year" : 2011
}
myfamily = {
"child1" : child1,
"child2" : child2,
"child3" : child3
}
Dictionary Methods
Python has a set of built-in methods that you can use on dictionaries.
Method Description
items() Returns a list containing a tuple for each key value pair
Returns the value of the specified key. If the key does not exist: insert the key, with
setdefault()
the specified value