Utilising list elements in Python

Till now, we have created a list and accessed individual elements of that list, now its time to learn how to use all of the elements in a list by iterating over them, using loops.

When you have a list with hundred or a thousand elements, and you want to access a few of them or all of them to perform some operation or calculation on them, it would be very hectic to use index numbers to access all the elements. In such cases, we use an iterative method, to iterate over all the list items. To understand how to iterate over list elements, we will be using loops. Don't worry loops will be covered in details in Looping tutorial.


Introduction to Loops

Loops are used for doing redundant and repetitive tasks.

Using for loop

Let's start with for loop. For iterating over a list, a for loop will need two things - First, a reference variable to store the element being iterated and second, a source (list or a range(), as in the previous case). When a for loop executes, elements of the source are one by one copied to the reference variable for utilizing(performing operations) them inside the loop. For example,

for x in range(0,5):
	print x

0 1 2 3 4

In the above case, x is our reference variable in which, each element in the range(0, 5) is getting stored, iteratively(one by one), simple enough.

Also, you must know that range(0, 5) returns a list with elements 0 to 4 in it.


Using while loop

Another way of iterating is by using the while loop. The while loop requires one condition to function. The loop keeps on iterating till that condition is true. As soon as it becomes false, the loops get terminated. For example,

i = 0
while i < 5:
	print i
	i = i+1

0 1 2 3 4

You can see that both the loops returned the same output, but the while loop, used the condition i < 5 in order to get the output. In simple english, it implies that "while i is less than 5, keep printing i and keep incrementing the value of i". Do you know why we increment the value of i, everytime after printing its value? Well, it's because if we hadn't incremented its value, the value would have remained the same as it was declared initially, which is, i = 0, and the condition i < 5, would have always been true and hence the loop would have never ended. Such condition leads to something that we call an infinite loop.


Using Loops with List

Enough about loops, now let's see how we can use them to access the List elements. Take a list with any type of element. Now, using the for loop we can access each element of the list very easily. For accessing the elements, we have to use a reference variable and our list variable as source.

myList = ['Last Of Us', 'Doom', 'Dota', 'Halo', ' ']
for x in myList:
	print x

Last Of Us Doom Dota Halo

Live Example →


Iterate two Lists simultaneously - zip() method

Suppose there are two lists and you want to ADD each element of the first list serially to each element of the second list and save it to a third (empty) list.

We can achieve this by executing a while loop like shown in below code, but this is not the right way.

i = 0
A = [1, 2, 3, 4]
B = [5, 6, 7, 8]
C = []
while i < len(A):
    C.append(A[i]+B[i])
    i=i+1

In the above code, we will have to add a lot of conditions to make sure that it runs without error all the time. For example, What if the size of both the list is not same?

We will have to do something different in such case because we have to iterate over the elements of two different lists, together. This can be done using the function zip().

Suppose the two lists are,

>>> A = [9, 8, 7, 6, 5]
>>> B = [3, 4, 5, 6, 7]

Then, let's create an empty list to save the results.

>>> C = []

Then the iteration process will require two reference variables, one for each list.

for x, y in zip(A, B):
	C.append(x+y)

Live Example →

zip() function can accept any number of list arguments. In this case, we have passed two lists A and B. Since both A and B have 5 elements, hence zip() will make the loop iterate 5 times. But, what if both the lists have different number of elements? Suppose A have n elements and B have m elements, if m < n then zip() will make loop m times, otherwise n times.

Another approach to this problem could have been using the index number of the list A and B.

for i in range(0,5):
	C.append(A[i]+B[i])

Although while using this technique it is necessary to know the size of both the lists prior to appending, while the previous approach (zip function) can be used in almost any situation.