Loops are one of the fundamental concepts of programming languages. Loops are used to perform repeated tasks until a certain condition is met.

There are two main looping constructs in Python that allow you to repeat a block of code repeatedly, the for and the while loops.

In this article, we will cover the basics of the for loops in Python. We will also show you how to use the range type to generate a sequence of numbers, and else, break and continue statements to alter the flow of a loop.

Python for Loop

The for loop in Python iterates over the items of a sequence and repeatedly executes a block of statements.

The Python for loop takes the following form:

for item in sequence:
  statements

The for statement starts with the for keyword, then a variable (item) to assign each item of the sequence to (loop control target), followed by the in keyword, and finally the sequence. Each conditional statement ends with a colon (:).

The statements block starts with an indentation and ends with the first unindented line. Most people choose to use either 4-space or 2-space indentation. The official Style Guide for Python Code recommends to use 4-spaces per indentation level and to avoid mixing the use of tabs and spaces for indentation.

Here is an example:

berries = ["Blueberry", "Raspberry", "Strawberry"]

for berry in berries:
  print(berry)
Blueberry
Raspberry
Strawberry

You can iterate over any sequence such as a string, a list, a dictionary, or a tuple.

In the code below, we’re iterating through the characters in the string ‘linux’:

for x in 'linux':
  print(x)
l
i
n
u
x

When looping through a dictionary, the variable is assigned to the key:

berries = {'Blueberry': 100, 'Raspberry': 125, 'Strawberry': 150}

for key in berries:
  print(key)
Blueberry
Raspberry
Strawberry

To access the values of the dictionary, use the key’s index:

berries = {'Blueberry': 100, 'Raspberry': 125, 'Strawberry': 150}

for key in berries:
  print(berries[key])

Another option to loop trought the dictionary’s values is to use the values() method:

berries = {'Blueberry': 100, 'Raspberry': 125, 'Strawberry': 150}

for value in berries.values():
  print(value)

The output of both examples is the same:

100
125
150

The range() Constructor

The Python range() constructor allows you to generate a sequence of integers by defining the start and the end point of the range. range() works differently in Python 2 and 3. In this article, we are using Python 3.

range() is typically used with the for loop to iterate over a sequence of numbers. This is a Python equivalent of the C-style for loop.

When only one argument is given, range returns a sequence of numbers, incremented by 1, starting from 0 to argument - 1:

for i in range(3):
  print(i)
0
1
2

When two arguments are provided, range returns a sequence of numbers, incremented by 1, starting from the first argument to second argument - 1:

for i in range(3, 5):
  print(i)
3
4

The third argument allows you to specify an increment:

for i in range(0, 16, 5):
  print(i)
0
5
10
15

Nested for Loop

A nested loop is a loop inside another loop. They are often used to handle iterable object that contains iterable elements:

for i in range(0, 6):
  for j in range(0, 6):
    print('%d   %d = %d' % (i, j, i j))
0   0 = 0
0   1 = 1
0   2 = 2
...
5   3 = 8
5   4 = 9
5   5 = 10

The break and continue Statements

The break and continue statements allow you to control the execution of the for loop.

break Statement

The break statement terminates the current loop and passes the program control to the statement that follows the loop. When used inside a nested loop, the break statement terminates the innermost loop.

In the following example, we are using the if statement to terminate the execution of the loop once the current iterated item is equal to ‘Raspberry’:

for i in ["Blueberry", "Raspberry", "Strawberry"]:
  if i == "Raspberry":
    break
  print(i)
Blueberry

continue Statement

The continue statement exits the current iteration of the loop and passes the program control to the next iteration of the loop. The loop is not terminated; only the current iteration is skipped.

In the following example, we are iterating through a range of numbers. When the current iterated item is equal to ‘3’, the continue statement will cause execution to return to the beginning of the loop and to continue with the next iteration:

for i in range(1, 6):
  if i == 3:
    continue
  print(i)
1
2
4
5

The else Clause

In Python, the for loop can have an optional else clause.

The else clause is executed when the loop finishes normally, i.e when all iterables are exhausted:

for i in ["Blueberry", "Raspberry", "Strawberry"]:
  print(i)
else:
  print('Loop completed.')
Blueberry
Raspberry
Strawberry
Loop completed.

When the loop is terminated with break or continue statements, the else clause is not executed:

for i in ["Blueberry", "Raspberry", "Strawberry"]:
  if i == "Raspberry":
    break
  print(i)
else:
  print('Loop completed.')
Blueberry

Conclusion

The Python for loop is used to repeatedly execute a block of code for a fixed number of times.

If you have any questions or feedback, feel free to leave a comment.