Skip to content

Latest commit

 

History

History
39 lines (26 loc) · 2.16 KB

README.md

File metadata and controls

39 lines (26 loc) · 2.16 KB

Looping and Modifying Lists: A Cautionary Tale

When working with lists in Python, it's crucial to be mindful of how you manipulate them, especially when looping through them. This README serves as a cautionary tale and provides guidance on best practices to avoid unexpected behavior when modifying lists during iteration.

The Pitfall of Modifying Lists While Looping

A common mistake is attempting to modify a list while iterating through it. This can lead to unexpected outcomes and potentially erroneous results in your program. Let's explore an example to illustrate this issue:

people = ["Anna", "Bob", "Chris", "David", "Fred"]

for person in people:
    print(person)
    if person == "Bob":
        print("Removing that person:", person)
        people.remove("Bob")

print("Final list:", people)

In this example, we attempt to remove "Bob" from the list while looping through it. However, when we run the code, we encounter unexpected behavior – "Chris" mysteriously disappears from the output. This occurs because modifying the list alters its structure mid-iteration, causing elements to be skipped or misplaced.

Best Practice: Using a Temporary List

To avoid such issues, it's recommended to use a temporary list when making modifications to the original list during iteration. Here's how we can refactor the previous example to adhere to this best practice:

people = ["Anna", "Bob", "Chris", "David", "Fred"]
new_people = []

for person in people:
    if person == "Bob":
        continue  # Skip 'Bob'
    new_people.append(person)

print("Final list:", new_people)

In this revised approach, we create a new list (new_people) to store the modified elements. We iterate through the original list (people) but perform modifications on the temporary list. As a result, we avoid altering the original list during iteration, preventing unexpected behavior. When working with lists in Python, remember the golden rule: never modify a list while looping through it. By using a temporary list for modifications, you can ensure your code behaves predictably and avoid potential bugs. Stay vigilant and follow best practices to write clean, reliable code.