Mastering the use of lists and loops is one of the 5 fundamental skills of building algorithms:
Lists
.Loops
.A list is, normally, any collection of values. The rules of how to add or remove elements from that list can change from one programming language to another. But – generally – they are the only ways for developers to create elements. Lists are not the only way we have to list store multiple values at once but it is the most used tool for that purpose. For example: list of students, list of artists, list of transactions…anything!
This primitive data-type does a lot more stuff than the others.
Every list has the same basic concepts:
The items: are the actual values inside in each position of the list.
The length: is the size of the list (how many items the list has).
Index: is the position of the element.
☝️List positions start a zero (0); the first element is the element in the position zero (0)
These are different examples of list declarations:
1myList = [] # empty list 2myList = ["Apple", "Orange", "Donkey"] # The only way to declare a "list" - a mutable and ordered collection of items 3myTuple = ("Apple", "Orange", "Donkey") # This a "tuple" - a more limited, ordered but immutable collection of items 4mySet = {"Apple", "Orange", "Donkey"} # This is a "set" - a more limited, unordered and immutable collection of items
To access a specific element in a list, you need an index
. We call index
the integer value that represents the position of the element you want to access/get/retrieve.
The index always must start at zero (0). That means that an List of 2 items can have index=0 or index=1. Trying to get the 2nd position will return "undefined" because it will mean that we are trying to access the third element (which does not exist). For example, to get any items in the list you can do the following:
1 2print(myList[0]) # print first element on the console 3 4aux = myList[3] 5print(aux); # print the 4th element on the console 6print(myList[len(myList) - 1]); # print the last element on the console
If you want you can reset or update any item inside of a list using its index like this:
1 myList[5] = 'Whatever value' 2 # Assign a value to the 6th element on the list
append
in Python ListsThe first way is to add the element to the end of the list, you should use this method every time you can because it's a lot faster than insert
.
1 myList = ['Pedro','Juan','Maria'] 2 myList.append('Chris') # add Chris to the end of the list 3 print(myList); # Output: ['Pedro','Juan','Maria','Chris'];
insert
in Python ListsUsing insert is easier for the developer because it will let you pick the positions in which you want to inster the element, but it is a slower method (worse performance):
1 myList = ['Pedro','Juan','Maria'] 2 myList.insert(1,'Chris') # add Chris between Pedro and Juan 3 print(myList); # Output ['Pedro','Chris','Juan','Maria'];
Python has many ways to delete an element from a list
It will remove the last element only!
1 myList = ['Pedro','Chris','Juan','Maria'] 2 myList.pop() 3 print(myList) # Output ['Pedro','Chris','Juan']
It will let you remove the first occurence of an element by its name.
1 # If you want to delete 'Chris', you need to do the following: 2 myList = ['Pedro','Chris','Juan','Maria','Chris'] 3 myList.remove('Chris') 4 print(myList) # Output ['Pedro','Juan','Maria','Chris'];
It will allow you to delete many items at once, you have to specify starting possition and ending possition.
1 # If you want to delete 'Chris', you need to do the following: 2 myList = ['Pedro','Chris','Juan','Maria','Pepe','Mario','Bob'] 3 del myList[2:5] #this statement deletes the characters at indexes 2, 3 and 4 4 print(myList) # Output ['Pedro', 'Chris', 'Mario', 'Bob']
Normally, when you manipulate lists, you have to loop all the items. For example: order them manually, flip them, filter them, etc.
There are many ways you can loop an entire list but the most used one is the for
loop.
1myList = [3423,5,4,47889,654,8,867543,23,48,56432,55,23,25,12] 2for number in myList: 3 print(number)
Sometimes it is useful to loop the array using each element's position (index). We can do that by using the range()
function.
By default the range
will start from index zero and continue until a specified number is reached, not including that index number:
1myList = ['Pedro','Chris','Mario','Bob'] 2 3# the range will cut off before len(myList) is reached, and therefore we don't need to write (len(myList)-1) 4for i in range(len(myList)): 5 print("The positions is " + str(i) + " for the element " + myList[i]) 6 7### Output: 8# The positions is 0 for the element Pedro 9# The positions is 1 for the element Chris 10# The positions is 2 for the element Mario 11# The positions is 3 for the element Bob
It is also possible to specify the starting index in the range, as well as the increment, by adding a starting point (the first parameter), and an increment value (the last parameter) in the range method:
1myList = ['Pedro','Chris','Mario','Bob', "Greg", "Kyle"] 2 3for i in range(1, 6, 2): # range(start value, end value (non inclusive), increment value) 4 print("The positions is " + str(i) + " for the element " + myList[i]) 5 6### Output: 7# The positions is 1 for the element Chris 8# The positions is 3 for the element Bob 9# The positions is 5 for the element Kyle
.