How To Construct For Loops In Python

Many objects in Python are iterable which means we can iterate over the elements of the object. Such as every element of a list or every character of a string.

Loops facilitate programmers to iterate over a block of code at every iteration, in Python we can iterate over objects with either While loop or For loop.

In this article, we will guide you through the construction of For loop in Python.

For Loop In Python

A for loop implements the repeated execution of code based on a loop counter or the loop variable. For loops are used when the number of iterations is known in advance.

This is the structure of a basic for loop in Python:

for [Temporary variable] in [sequence]:
     [do something]

The syntax is very specific therefore you should always follow this particular layout.

The for loop must have a colon(:) after the sequence, and the statement under the loop must be indented. Python relies on indentation to know which block of code belongs to the for loop. Always indent your code by adding 4 spaces to the write of the statement.

Let’s begin by creating a very basic for loop,

for i in range(0, 4):
    print(i)

Output:

0
1
2
3

In the above example, we set i as the temporary iterable variable and printed its value in each iteration.

If you are not already aware of the range() keyword, it’s one of the Python’s built-in immutable sequence types. In loops range() can be used to control the number of iterations. We can pass the following 3 arguments to the range method, START, STOP and STEPS. In the above example, we passed the starting and ending values i.e. 0 and 4.

We can assign literally anything we wish as the iterable variable, and it will work,

for anything in range(0, 4):
    print(anything)

Output:

0
1
2
3

It’s not mandatory to reference the temporary iterable variable in the loop body. We can print a simple “Hello” String in each iteration.

for anything in range(0,4):
     print("Hello")

Output:

Hello
Hello
Hello
Hello

Now that we know the basics let’s go ahead and explore for loops with different object types.

For loop with strings

We can iterate over the characters of a string like this,

for letter in "Python":
    print(letter)

Output:

P
y
t
h
o
n

In the above example, we iterated over the letters of the word”Python” and printed them. However it doesn’t look appealing because the output is spread over multiple lines, we can change this behavior by adding the end parameter in our print statement,

for letter in "Python":
    print(letter, end=" ")

Output:

P y t h o n

Now instead of printing letter in a new line, our result prints out in a single line with space in between letters.

For loops in Lists

Iteration over the item of a list is also possible to do so first, create a basic list of numbers and store it in the variable  my_list:

my_list = [1,2,3,4]

Now, we can iterate over the items of the list and print them.

 for num in my_list:
...    print(num)
...
1
2
3
4

As a reminder, you can name your iterable variable anything you want, but it advised to name it something which is related to the actual variable.

For loops In Tupple

For loop works pretty much exactly like the list. Let’s create a tuple and store it in the variable  my_tuple.

my_tuple = ( 1,"some text", 234, "more text" )

We can iterate over the items of the tuple just like we did in lists,

 for i in my_tuple:
...    print(i)
...
1
some text
234
more text

There is something we can do with tuples and for loop which is called tuple unpacking.

Tuple unpacking In Python

Create a list of tuples and store it in the variable tup_list.

tup_list = [(1,2),(3,4),(4,5), (7,8) ]

This is essentially a list containing tuple pairs.

Obviously, we can iterate over the items and print the tuple pairs like this,

tup_list = [(1,2),(3,4),(4,5), (7,8) ]
 for item in tup_list:
...     print(item)
...
(1, 2)
(3, 4)
(4, 5)
(7, 8)

In Python, we can do something called tuple unpacking to get the items inside the tuples printed. For doing so we need to bring two iterable variables in the for loop:

for (item1, item2) in tup_list:
    print(item1)
    print(item2)
    print('\n')

Output:

1
2

3
4

4
5

7
8

Finally, the items of tuple got unpacked, this is something which you will use a lot in your programs. However, this will work only when you have a list of tuples.

For loops in Dictionary

When iterating through a dictionary, it’s important to keep the key : value structure in mind to ensure that you are calling the correct element of the dictionary.

Let’s create a basic dictionary and store it in a variable dictionary.

user ={ 'name': 'Jhon' , 'email' :'[email protected]', 'pass' : 'somepass' }

Now try to iterate over the dictionary items,

>>> for item in user:
...    print(item)
...
name
email
pass

But we are only gettings the keys, not the values.

When using dictionaries with for loops, the iterating variable corresponds to the keys of the dictionary, and dictionary_variable[iterating_variable] corresponds to the values.

To print the values of our dictionary do the following:

 >>> for item in user:
...     print(user[item])
...
Jhon
[email protected]
somepass

Nested For Loops

Nested loops are nothing but loops inside a loop. You can create any number of loops inside a loop.

Roughly a nested loop structure looks similar to this:

for [first iterating variable] in [outer loop]:              # Outer loop
        [do something] # Optional
        for [second iterating variable] in [nested loop]:  # Nested loop
               [do something]

The program will first trigger the outer loop which after it’s the first iteration will trigger the inner loop which will run till it’s compilation then return back to the outer loop which will trigger the second iteration of the outer for loop. This process will continue till the outer loop doesn’t terminate.

Let’s look at one example of nested loop in Python:

number = [1, 2, 3]
alphabets = ['a', 'b', 'c']

for num in number:
    print(num, end=" ")
    for letter in alphabets:
        print(letter, end=" ")

This will print the following output:

1 a b c 2 a b c 3 a b c

The numbers are getting printed before the letters because the outer loop is printing them.

Break and Continue Keyword

Python provides two keywords to terminate a loop prematurely, they are Break and Continue.

Break statement terminates the loop immediately, we can introduce the break keyword with a conditional statement like if in our program.

list = [1,2,3,4,]
for i in list:
   if i == 3:
    break
   print(i)

Output:

1
2

Adding break keyword to our loop resulted in the termination of the loop when i holds the value 3

The continue statement doesn’t break the entire loop it just terminates the current iteration. As soon as our interpreter hits the continue statement it goes straight to the top of the loop instead of executing loop statements for that iteration.

list = [1,2,3,4,]
for i in list:
   if i == 3:
    continue
   print(i)

Output:

1
2
4

In output 3 wasn’t printed because of the continue statement. When i holds the value 3 Python goes back to the beginning of the loop instead of printing it.

Else Clause In Python

Python provides an unique else clause to for loop to add additional statements when the loop is terminated.

list = [1,2,3,4,]
for i in list:
   print(i)
else:
    print("Loop terminated")

Output

1
2
3
4
done

You might be wondering you can do this with a normal print statement too indeed you can. Actually, the else clause only gets executed when the for loop terminates by itself and not by any explicit keyword like break.

Let’s verify this theory with an example:

list = [1,2,3,4,]
for i in list:
   if i == 3:
    break
   print(i)
else:
    print("Done")

Output:

1
2

Else clause won’t get executed because the loop didn’t terminate naturally, it was forced to terminate by the break keyword.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Close