Python For Loops

Learn how to use for loops in Python to iterate over sequences and collections.

Python For Loops

A for loop is used for iterating over a sequence (that is either a list, a tuple, a dictionary, a set, or a string).

This is less like the for keyword in other programming languages, and works more like an iterator method as found in other object-orientated programming languages.

With the for loop we can execute a set of statements, once for each item in a list, tuple, set etc.

Example

fruits = ["apple", "banana", "cherry"]
for x in fruits:
    print(x)

The for loop does not require an indexing variable to set beforehand.

Looping Through a String

Even strings are iterable objects, they contain a sequence of characters:

Example

for x in "banana":
    print(x)

The break Statement

With the break statement we can stop the loop before it has looped through all the items:

Example - Exit the loop when x is "banana":

fruits = ["apple", "banana", "cherry"]
for x in fruits:
    print(x)
    if x == "banana":
        break

Example - Exit the loop when x is "banana", but this time the break comes before the print:

fruits = ["apple", "banana", "cherry"]
for x in fruits:
    if x == "banana":
        break
    print(x)

The continue Statement

With the continue statement we can stop the current iteration of the loop, and continue with the next:

Example - Do not print banana:

fruits = ["apple", "banana", "cherry"]
for x in fruits:
    if x == "banana":
        continue
    print(x)

The range() Function

To loop through a set of code a specified number of times, we can use the range() function,

The range() function returns a sequence of numbers, starting from 0 by default, and increments by 1 (by default), and ends at a specified number.

Example

for x in range(6):
    print(x)

Note that range(6) is not the values of 0 to 6, but the values 0 to 5.

The range() function defaults to 0 as a starting value, however it is possible to specify the starting value by adding a parameter: range(2, 6), which means values from 2 to 6 (but not including 6):

Example

for x in range(2, 6):
    print(x)

The range() function defaults to increment the sequence by 1, however it is possible to specify the increment value by adding a third parameter: range(2, 30, 3):

Example

for x in range(2, 30, 3):
    print(x)

Else in For Loop

The else keyword in a for loop specifies a block of code to be executed when the loop is finished:

Example

for x in range(6):
    print(x)
else:
    print("Finally finished!")

Note: The else block will NOT be executed if the loop is stopped by a break statement.

Example - Break the loop when x is 3, and see what happens with the else block:

for x in range(6):
    if x == 3: break
    print(x)
else:
    print("Finally finished!")

Nested Loops

A nested loop is a loop inside a loop.

The "inner loop" will be executed one time for each iteration of the "outer loop":

Example

adj = ["red", "big", "tasty"]
fruits = ["apple", "banana", "cherry"]

for x in adj:
    for y in fruits:
        print(x, y)

The pass Statement

for loops cannot be empty, but if you for some reason have a for loop with no content, put in the pass statement to avoid getting an error.

Example

for x in [0, 1, 2]:
    pass

Practical Examples

Iterating Over Dictionary

student = {"name": "John", "age": 25, "grade": "A"}

# Iterate over keys
for key in student:
    print(key)

# Iterate over values
for value in student.values():
    print(value)

# Iterate over key-value pairs
for key, value in student.items():
    print(f"{key}: {value}")

List Comprehension

# Traditional for loop
squares = []
for x in range(10):
    squares.append(x**2)

# List comprehension (more Pythonic)
squares = [x**2 for x in range(10)]
print(squares)

Enumerate Function

fruits = ["apple", "banana", "cherry"]

# Get both index and value
for index, fruit in enumerate(fruits):
    print(f"{index}: {fruit}")

# Start enumeration from a different number
for index, fruit in enumerate(fruits, start=1):
    print(f"{index}: {fruit}")

Zip Function

names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
cities = ["New York", "London", "Tokyo"]

# Iterate over multiple lists simultaneously
for name, age, city in zip(names, ages, cities):
    print(f"{name} is {age} years old and lives in {city}")

enumerate, zip, and range

These three built-ins cover most looping needs cleanly — reach for them instead of manual index counters.

fruits = ["apple", "banana", "cherry"]

for i, fruit in enumerate(fruits):        # index + value
    print(i, fruit)                        # 0 apple ...

names = ["Ann", "Bob"]
ages  = [30, 25]
for name, age in zip(names, ages):        # loop two lists together
    print(name, age)                       # Ann 30 ...

for n in range(2, 11, 2):                  # start, stop, step
    print(n)                               # 2 4 6 8 10

Avoid for i in range(len(items)) just to index — use enumerate(items), which gives the index and the item together.

Looping a Dictionary and the for-else

scores = {"math": 90, "science": 85}
for subject, mark in scores.items():
    print(subject, mark)

# for-else: else runs only if no break happened
for x in [1, 3, 5]:
    if x % 2 == 0:
        print("found an even")
        break
else:
    print("all odd")     # this runs

Try It Yourself

Exercise 1: Print each fruit with its position number starting at 1.

Show solution
for i, fruit in enumerate(["apple", "pear"], start=1):
    print(i, fruit)   # 1 apple / 2 pear

Exercise 2: Sum the numbers 1 to 100 with a loop.

Show solution
total = 0
for n in range(1, 101):
    total += n
print(total)   # 5050

Key Takeaways

  • for iterates directly over any iterable.
  • Use enumerate for indexes, zip for parallel lists, range for numbers.
  • Loop dictionaries with .items().

📘 Real-World Deep Dive

The <code>for</code> loop is Python's universal iter-anything — lists, tuples, dicts, files, generators, async iterables. Knowing <code>enumerate/zip/itertools</code> is the difference between 1-line loops and 50-line scaffolding.

Real-Life Scenario

Process two parallel streams (timestamps and values) and build a tidy CSV-ready table.

Real-Life Example

import csv
from itertools import zip_longest
import io

timestamps = ["2026-08-20T09:00", "2026-08-20T10:00", "2026-08-20T11:00"]
values =    [12, 19, 7]
labels =    ["EUR/USD", "USD/JPY", "EUR/GBP"]

buf = io.StringIO()
writer = csv.writer(buf)
writer.writerow(["ts", "label", "value"])
for i, (ts, val) in enumerate(zip(timestamps, values)):
    writer.writerow([ts, labels[i % len(labels)], val])

# Tidy cells, padded for human reading
buf.seek(0)
for row in csv.reader(buf):
    print(f"{row[0]:<22}  {row[1]:<10}  {row[2]:>6}")

Expected Output

ts                       label       value
2026-08-20T09:00         EUR/USD          12
2026-08-20T10:00         USD/JPY          19
2026-08-20T11:00         EUR/GBP           7

Common mistakes

  • Mutating a list while iterating it changes indices and causes skipped or repeated elements.
  • range(len(xs)) is rarely needed; use enumerate(xs) instead.
  • Reading with for line in file consumes the file; use with open(...) to guarantee closure.

🚀 Performance & Best Practices

  • Use while only when there's no natural iterable.
  • for ... else runs the else block when the loop completes without break — handy for search loops.
  • Generator expressions avoid keeping the whole list in memory: sum(x*x for x in xs).

🧪 Try It Yourself

  1. Replace the loop body with a list comprehension and benchmark both.
  2. Use zip_longest to handle missing values and pad with "n/a".
  3. Stream a 1 M-row CSV and compute moving-window means in a single pass.

FAQ: Python For Loops

Common questions about this page.

What is Python For Loops?

Python For Loops is a Python Tutorial lesson that explains python for loop in Python. Learn how to use for loops in Python to iterate over sequences and collections. Copy the samples and run them in the Python editor. It is written for beginners who want a clear definition and working examples.

Should I run python for loop examples locally for better learning?

Yes. Use the browser editor on StudyGrid for a quick check, then Download the example and run it on your computer. Local runs show real errors and the real toolchain, which is one of the fastest ways to learn python for loop in this Python Tutorial Python lesson (Python For Loops).

How do I use python for loop in Python?

To use python for loop in Python, follow the examples on this StudyGrid page. Copy a snippet, run it in the browser, then Download and run it locally for better learning. Change the values and compare the output.

What is the syntax of python for loop?

This Python For Loops tutorial shows python for loop syntax with short Python examples. Use the code blocks in this lesson for the exact statements, then try them in your editor.

Python For Loops example for beginners

Yes. This page includes a beginner python for loop example you can copy and run. It is designed for searches such as "python for loop for beginners", "python for loop example", and "how to use python for loop".

What are common mistakes with python for loop?

Common python for loop mistakes include wrong syntax, mixing types, and skipping practice. Work through this Python Tutorial chapter in order, run every example, and check the output before moving on.

Why should I learn python for loop?

Python For Loops is used in real Python work. Learning python for loop helps you write clearer programs and continue the Python Tutorial tutorial on StudyGrid.

Is Python For Loops free to learn online?

Yes. You can learn python for loop free on StudyGrid (studygrid.in). This chapter is part of the Python Tutorial path and includes examples, syntax, and next-step links.