Related Tutorial

33: Exploring Python’s For Loop: A Love Story with Examples

Exploring Python's For Loop: A Love Story with Examples

Python’s syntax for the for loop is both elegant and intuitive, often feeling like reading plain English. It’s no wonder that it’s one of the most beloved constructs in Python, frequently used by programmers. Let’s dive into the beauty of Python’s for loop, explore some of its features, and look at practical examples to see it in action.

The Basic for Loop

The basic for loop in Python allows you to iterate over a list or any iterable, assigning each element to a variable and performing actions within the loop. Here’s a simple example:

				
					myList = [1, 2, 3, 4]
for item in myList:
    print(item)

				
			

This loop reads almost like plain English: “For each item in myList, print the item.” It’s concise and to the point.

Using pass in a for Loop

The pass statement is a placeholder that allows you to write a loop that does nothing, typically used as a stub for future code:

				
					animalLookup = {'a': 'ant', 'b': 'bat', 'c': 'cat'}
for letter, animals in animalLookup.items():
    pass

				
			

Skipping Iterations with continue

The continue statement skips the rest of the code inside the loop for the current iteration and moves on to the next iteration:

				
					animals = ['cat', 'dog']
for animal in animals:
    if len(animal) > 3:
        continue
    print(f"Only one animal: {animal}")

				
			

Exiting the Loop Early with break

The break statement exits the loop prematurely when a certain condition is met:

 
				
					animals = ['cat', 'dog', 'elephant']
for animal in animals:
    if len(animal) > 3:
        print(f"Found: {animal}")
        break

				
			

This loop will print the first animal with a length greater than 3 and then exit the loop.

The for-else Statement

The for-else construct is a unique feature in Python. The else block is executed only if the loop is not terminated by a break statement. A classic example is checking for prime numbers:

				
					for number in range(2, 100):
    for factor in range(2, int(number ** 0.5) + 1):
        if number % factor == 0:
            break
    else:
        print(f"{number} is prime")

				
			

In this example, the else block runs if no break occurs, indicating that the number is prime.

Using break-else in a While Loop

The break-else pattern can also be used with while loops. The else block runs only if the break is not encountered:

				
					number = 2
while number < 100:
    for factor in range(2, int(number ** 0.5) + 1):
        if number % factor == 0:
            break
    else:
        print(f"{number} is prime")
    number += 1

				
			

A More Verbose but Equivalent Example

Sometimes, you’ll see code that achieves the same result with more lines and variables. Here’s an equivalent but less elegant example of the prime-checking code:

				
					for number in range(2, 100):
    found_factors = False
    for factor in range(2, int(number ** 0.5) + 1):
        if number % factor == 0:
            found_factors = True
            break
    if not found_factors:
        print(f"{number} is prime")

				
			

This example uses an additional variable found_factors to track if a factor was found, but it is less clean and Pythonic than the for-else construct.

Conclusion

Understanding and utilizing pass, continue, break, and else in your loops can help you write cleaner, more elegant, and more Pythonic code. Python’s for loop, with its readable syntax and powerful features, remains a favorite among programmers for its simplicity and versatility.