目次  
- 1 1. Introduction
- 2 2. Basics of for loops in Python
- 3 3. Using the enumerate function
- 4 4. Simultaneous Iteration of Multiple Sequences with the zip Function
- 5 5. List Comprehensions (List Comprehension)
- 6 6. Iterating Over Dictionaries
- 7 7. Iterating Over Sets
- 8 8. Using the itertools Module
- 9 9. Summary
1. Introduction
Python iteration is an essential element for improving program efficiency and readability. Most programming languages have a loop structure calledforeach, which allows easy iteration over each element of a sequence, but Python does not have a direct foreach loop. Therefore, Python uses various features such as for loops, enumerate, and zip to achieve similar processing. This article explains how to perform iteration in Python that corresponds to foreach, from a simple and practical perspective.Why doesn’t Python have foreach?
 Python does not explicitly adopt foreach because the language design emphasizes simplicity and flexibility. for loops and comprehensions are designed to make many iterative tasks easy to implement. Python provides robust features for iterating over indices and multiple sequences simultaneously, so even without foreach, similar expressions are possible.Benefits of Iteration in Python
Iteration in Python offers the following advantages.- Conciseness: Code can be written more concisely than in other languages, resulting in higher readability.
- Flexibility: Uniform iteration is possible across multiple sequences and different data structures.
- Comprehensions: List, dictionary, and other collections can be generated simply, making it easy to write efficient code.
for loop as a fundamental aspect of iteration in Python.2. Basics of for loops in Python
Thefor loop, a core iteration feature in Python, is frequently used to process each element of a sequence. Here we provide a detailed explanation of the basic usage of for loops for sequences like lists and tuples.Basic syntax of for loops
A Pythonfor loop is written using the following syntax:for element in sequence:
    process- Element: The variable that receives each item of the sequence in order during each iteration.
- Sequence: An iterable data structure such as a list, tuple, or string.
Example 1: Iterating over a list
First, let’s look at a basicfor loop example using a list.fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)fruits list is assigned in order to fruit, and print(fruit) is executed. This example yields the following output.apple
banana
cherryExample 2: Iterating over a string
Strings are also sequences, so you can iterate over each character.text = "hello"
for char in text:
    print(char)text is assigned in order to char and printed. The result is as follows.h
e
l
l
oExample 3: Iterating over a specified range (range function)
If you want to iterate over a specified range of numbers, use therange() function.for i in range(5):
    print(i)i and prints them.0
1
2
3
4How to use the range function
- range(n): Generate numbers from 0 up to- n-1.
- range(start, stop): Generate numbers from- startto- stop-1.
- range(start, stop, step): Generate numbers from- startto- stop-1with a step of- step.
Practical examples of for loops
Calculating the sum of an array
Here’s an example using afor loop to calculate the sum of the numbers in a list.numbers = [1, 2, 3, 4, 5]
total = 0
for number in numbers:
    total += number
print("Total:", total)total in order, and the final total is printed.Conditional processing of elements
You can also set conditions inside afor loop to process elements based on certain conditions.numbers = [1, 2, 3, 4, 5, 6]
for number in numbers:
    if number % 2 == 0:
        print(number, "is even")
    else:
        print(number, "is odd")Nested for loops (nested structure)
for loops can be nested, which is useful when processing multiple lists or two-dimensional lists.matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in matrix:
    for item in row:
        print(item, end=" ")
    print()  # newline1 2 3
4 5 6
7 8 9Summary
Python’sfor loop is a fundamental construct for efficiently iterating over sequences such as lists, tuples, and strings. By combining the range() function with conditionals and nesting, you can implement a variety of processes simply. Understanding this basic structure allows you to perform flexible iteration comparable to foreach.
3. Using the enumerate function
When iterating over a sequence in Python, there are times when you want to obtain both the list index and the element simultaneously. In such cases, using theenumerate function allows you to efficiently retrieve the index and element while looping. Here, we will explain in detail the basic usage and practical examples of the enumerate function.Basic syntax of the enumerate function
By using theenumerate function, each element in the sequence is assigned an index, generating pairs of index and element. It is used with the following syntax.for index, element in enumerate(sequence):
    process- Index: the index number corresponding to each element in the sequence.
- Element: each element in the sequence.
- Sequence: an iterable data structure such as a list, tuple, or string.
Example 1: Getting list indices and elements simultaneously
An example that processes a list by obtaining its indices and elements simultaneously usingenumerate.fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
    print(f"{index}: {fruit}")fruits list along with its index.0: apple
1: banana
2: cherryExample 2: Specifying a start index
Theenumerate function has an option to specify a start index. By default, indices start at 0, but you can set any value as the start index.fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits, start=1):
    print(f"{index}: {fruit}")1: apple
2: banana
3: cherryPractical examples of the enumerate function
Displaying task list progress
Theenumerate function can also be useful when indexes are helpful, such as in task management. The example below displays the progress of each task in a list format.tasks = ["Laundry", "Cleaning", "Cooking"]
for index, task in enumerate(tasks, start=1):
    print(f"Task{index}: {task} - Completed")Task1: Laundry - Completed
Task2: Cleaning - Completed
Task3: Cooking - CompletedProcessing based on specific conditions within an array
When you want to process elements at specific positions in an array using their indices,enumerate is also handy.numbers = [10, 20, 30, 40, 50]
for index, number in enumerate(numbers):
    if index % 2 == 0:
        print(f"Element {number} at index {index} has an even index")Element 10 at index 0 has an even index
Element 30 at index 2 has an even index
Element 50 at index 4 has an even indexSummary
Theenumerate function is extremely useful for obtaining indices and elements simultaneously. Because you can specify a start index, it is suitable for numbering lists and processing based on specific conditions. In particular, it makes it easier to track each element in a list, improving code readability and maintainability.4. Simultaneous Iteration of Multiple Sequences with the zip Function
Using Python’szip function, you can iterate over multiple sequences simultaneously. This feature is very useful when you want to process lists, tuples, or other sequences in parallel. Here we introduce the basic usage and practical examples of the zip function.Basic Syntax of the zip Function
Thezip function takes multiple sequences as arguments, groups their elements into tuples, and produces an iterable object. Use the zip function with the following syntax.for element1, element2, ... in zip(sequence1, sequence2, ...):
    process- element1, element2…: One element from each sequence is grouped into a tuple and assigned to variables in order.
- sequence1, sequence2…: Specify the sequences you want to process together, such as lists or tuples.
Example 1: Iterating Over Two Lists Simultaneously
This example iterates over two lists simultaneously using thezip function and prints combined elements from each list.names = ["Alice", "Bob", "Charlie"]
scores = [85, 92, 78]
for name, score in zip(names, scores):
    print(f"{name}'s score is {score}")names list and the scores list at the same time, outputting names and scores.Alice's score is 85
Bob's score is 92
Charlie's score is 78Example 2: Iterating Over Three or More Lists Simultaneously
Thezip function also supports three or more sequences, so you can process multiple lists or tuples at once.names = ["Alice", "Bob", "Charlie"]
scores = [85, 92, 78]
grades = ["B", "A", "C"]
for name, score, grade in zip(names, scores, grades):
    print(f"{name}'s score is {score}, and the grade is {grade}")Alice's score is 85, and the grade is B
Bob's score is 92, and the grade is A
Charlie's score is 78, and the grade is CBehavior of the zip Function When Sequences Have Different Lengths
When using thezip function, if the sequences have different lengths, iteration stops at the length of the shortest sequence. Let’s check this in the example below.names = ["Alice", "Bob"]
scores = [85, 92, 78]  # 3 elements
for name, score in zip(names, scores):
    print(f"{name}'s score is {score}")names has only two elements, the third element is ignored and the output will be as follows.Alice's score is 85
Bob's score is 92Practical Examples of the zip Function
Displaying List Elements as Pairs
Using thezip function, you can also pair adjacent elements within a single list for processing.data = [10, 20, 30, 40]
for x, y in zip(data, data[1:]):
    print(f"Pair: ({x}, {y})")Pair: (10, 20)
Pair: (20, 30)
Pair: (30, 40)Summary
Thezip function is a powerful tool for iterating over multiple sequences at the same time. It helps with tasks like pairing or combining different pieces of data and allows you to write concise code. When working with sequences of different lengths, using zip_longest as needed enables flexible iteration.
5. List Comprehensions (List Comprehension)
Python includes a powerful technique called “list comprehension” for generating sequences simply. By using list comprehensions, generating lists with the traditionalfor loop becomes even more concise and readable. This chapter explains the basic usage of list comprehensions, along with real code examples, to illustrate their convenience.Basic Syntax of List Comprehensions
List comprehensions are written using the following syntax.[expression for element in sequence]- Expression: The operation applied to each element.
- Element: The variable that receives each item from the sequence in order.
- Sequence: An iterable data structure such as a list, tuple, or string.
Example 1: Basic List Comprehension
For example, to create a new list by doubling each element in a list, using the traditionalfor loop would be written as follows.numbers = [1, 2, 3, 4, 5]
doubled = []
for number in numbers:
    doubled.append(number * 2)
print(doubled)numbers = [1, 2, 3, 4, 5]
doubled = [number * 2 for number in numbers]
print(doubled)[2, 4, 6, 8, 10]Conditional List Comprehensions
In list comprehensions, you can add a conditional expression to process only specific elements. The condition is written asfor followed by if.Example 2: Conditional List Comprehension
For instance, to double only the even numbers in a list, you would write:numbers = [1, 2, 3, 4, 5]
doubled_even = [number * 2 for number in numbers if number % 2 == 0]
print(doubled_even)[4, 8]Example 3: Conditional List Comprehension Using else
If you want to apply different processing to each element using conditional branching, you can addelse before if.numbers = [1, 2, 3, 4, 5]
result = [number * 2 if number % 2 == 0 else number for number in numbers]
print(result)[1, 4, 3, 8, 5]Summary
By leveraging list comprehensions, you can generate lists more concise and efficiently compared tofor loops. Combining simple conditional processing and specific operations lets you write more Pythonic code. However, complex comprehensions can reduce readability, so it’s important to use them in appropriate situations.6. Iterating Over Dictionaries
A dictionary (dict) is one of the primary data structures in Python, used to store key‑value pairs. Like lists and tuples, dictionaries can be iterated over, but with dictionaries you often retrieve keys, values, or both. This chapter explains how to iterate over dictionaries and useful functions in detail.Basic Dictionary Iteration
In basic dictionary iteration, you use afor loop to obtain either keys, values, or key‑value pairs.Example 1: Iterating Over Keys Only
When you iterate over a dictionary with afor loop, it yields only the keys by default.person = {"name": "Taro", "age": 30, "occupation": "Engineer"}
for key in person:
    print(key)name
age
occupationExample 2: Iterating Over Values Only
To iterate over a dictionary’s values, use thevalues() method.person = {"name": "Taro", "age": 30, "occupation": "Engineer"}
for value in person.values():
    print(value)Taro
30
EngineerExample 3: Iterating Over Key‑Value Pairs
If you want to retrieve both keys and values simultaneously, use theitems() method. This returns each pair as a tuple, which can be unpacked into two variables.person = {"name": "Taro", "age": 30, "occupation": "Engineer"}
for key, value in person.items():
    print(f"{key}: {value}")name: Taro
age: 30
occupation: EngineerConditional Dictionary Iteration
If you want to retrieve only the pairs that meet a specific condition within a dictionary, you can specify the condition using aif statement.Example 4: Outputting Only Pairs with Specific Values
For example, to output only items where the age is 30 or higher, you would write:people = {"Taro": 30, "Hanako": 25, "Jiro": 35}
for name, age in people.items():
    if age >= 30:
        print(f"{name} is at least 30 years old")Taro is at least 30 years old
Jiro is at least 30 years oldDictionary Comprehensions
Just like list comprehensions, dictionary comprehensions are also possible. They allow you to create a new dictionary based on a condition.Example 5: Creating a New Dictionary with a Condition
For instance, to create a new dictionary that includes only people aged 30 or older, you can write:people = {"Taro": 30, "Hanako": 25, "Jiro": 35}
adults = {name: age for name, age in people.items() if age >= 30}
print(adults){'Taro': 30, 'Jiro': 35}Summary
In Python, you can iterate over dictionaries by retrieving keys, values, or key‑value pairs. Additionally, conditional dictionary comprehensions and handling nested dictionaries enable flexible data processing. Dictionaries are a very handy data structure for organizing and managing complex data, and using the appropriate iteration techniques enhances their usefulness.
7. Iterating Over Sets
A set (set) is a data structure that stores unique elements, useful for checking whether a particular element is present or removing duplicates from a list. Because Python sets are unordered, unlike lists or tuples you cannot access elements by index, but you can iterate over all elements using a for loop.  In this chapter, we’ll cover the basics of iterating over sets, conditional iteration, and iteration methods that involve set-specific operations.Basic Set Iteration
To process every element in a set, use afor loop. Because sets have no order, the order of processing may differ each time.Example 1: Print All Elements of a Set
First, let’s look at a basic iteration example that prints every element in a set.fruits = {"apple", "banana", "cherry"}
for fruit in fruits:
    print(fruit)banana
cherry
appleConditional Set Iteration
You can also process set elements that meet specific conditions. Use aif statement to filter based on a condition.Example 2: Print Only Elements That Satisfy a Condition
For instance, to output only strings in the set that are at least five characters long, you would write:fruits = {"apple", "banana", "cherry", "fig", "kiwi"}
for fruit in fruits:
    if len(fruit) >= 5:
        print(fruit)banana
cherry
appleSet Comprehensions
Like list comprehensions, set comprehensions are also available. Using a set comprehension lets you concisely create a new set based on a condition.Example 3: Create a New Set with a Condition
For example, to create a new set that contains only elements with five or more characters, as in the previous example, you can write:fruits = {"apple", "banana", "cherry", "fig", "kiwi"}
long_fruits = {fruit for fruit in fruits if len(fruit) >= 5}
print(long_fruits){'banana', 'cherry', 'apple'}Summary
Sets are a data structure that disallows duplicates and has no order, giving them characteristics different from lists or tuples. They are especially suited for handling unique data and for operations with other sets to find intersections or differences. Additionally, using set comprehensions enables concise and efficient data processing.8. Using the itertools Module
itertools module is a handy toolkit included in the Python standard library to assist with iteration. It provides many functions for efficiently handling iterable data structures, which is especially useful when working with large amounts of data. In this chapter, we explain the main functions of the itertools module and how to use them.Key Functions of the itertools Module
Theitertools module provides a variety of functions to enhance iteration. Here we introduce representative functions and explain how to use them with concrete examples.1. count function
Thecount function is an iterator that generates numbers increasing infinitely from a specified start value. It is mainly used for generating sequential numbers when no upper limit is set.from itertools import count
for i in count(10):
    if i > 15:
        break
    print(i)10
11
12
13
14
152. cycle function
Thecycle function creates an iterator that repeats a given sequence infinitely. It is useful when you want to output a specific pattern repeatedly.from itertools import cycle
count = 0
for item in cycle(["A", "B", "C"]):
    if count == 6:
        break
    print(item)
    count += 1A
B
C
A
B
C3. repeat function
Therepeat function creates an iterator that repeats a specified element infinitely. You can also specify the number of repetitions with a second argument.from itertools import repeat
for item in repeat("Python", 3):
    print(item)Python
Python
Python4. accumulate function
Theaccumulate function creates an iterator that computes the cumulative sum of a given sequence. For example, it is handy for adding list elements sequentially. By using a custom function, you can also perform other calculations such as products or maximum values.from itertools import accumulate
numbers = [1, 2, 3, 4, 5]
result = list(accumulate(numbers))
print(result)[1, 3, 6, 10, 15]Summary
Theitertools module offers a wealth of functions for efficiently implementing complex iteration. It is especially useful when you need infinite iteration or combinations and permutations of data, helping to keep code concise and speed up processing. By handling iteration more flexibly, you can write Python code that handles large datasets and complex operations.9. Summary
Python offers various ways to handle iteration, each with its own characteristics and uses. Throughout this series, we learned diverse techniques to make iteration in Python more efficient. In this chapter, we’ll review those techniques so you can choose the right option for your goals.Key Points and Uses of Each Method
Below is a concise summary of the key points and uses of each method.1. for Loop
Point: The basic iteration syntax in Python. Simple and versatile. Use: Used when processing sequences such as lists, tuples, or strings.2. enumerate Function
Point: A function for obtaining both the index and the element simultaneously. Use: Iterating over data where order matters or when an index is needed.3. zip Function
Point: Allows simultaneous iteration over multiple sequences. Use: Convenient for processing corresponding elements of different lists or tuples.4. List Comprehension
Point: A simple and efficient way to generate lists. Conditional processing is also possible. Use: Generating and filtering lists based on conditions or expressions.5. Dictionary Iteration
Point: Can retrieve keys, values, or key-value pairs. Use: Used when handling dictionary data and processing based on keys and values.6. Set Iteration
Point: Can process data with unique (non-duplicate) elements. Use: Processing unique data and performing operations with other sets.7. itertools Module
Point: Enables infinite iteration, combinations of multiple sequences, and generation of permutations and combinations. Use: For complex iteration or when efficiently handling large amounts of data.Guidelines for Choosing the Optimal Method
In iteration, it’s important to select the optimal method based on the goal and data structure. Below are guidelines for choosing the appropriate iteration technique for each purpose.- Simple list or tuple iteration: The basic forloop is the most straightforward and simple.
- When an index is needed: By using enumerate, you can loop while obtaining both the index and the element simultaneously.
- When processing multiple sequences simultaneously: Using zipallows you to efficiently process multiple lists or tuples in parallel.
- Conditional list generation: Using list comprehensions lets you select elements conditionally and store computed results directly in a list.
- When special operations on dictionaries or sets are needed: By using items(),values()methods, or set comprehensions specialized for dictionaries and sets, you can easily handle keys and values or unique data.
- When advanced iteration or optimization is needed: Leveraging the itertoolsmodule enables efficient infinite iteration, combination of multiple data sets, and generation of special permutations and combinations.

 
 


