Python Forum

Full Version: Why does modifying a list in a for loop not seem to work?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
numbers = [2,8,6,12,13,9,5]
for number in numbers:
    if number % 2 == 0 :
        numbers.remove(number)
print(numbers)
I wrote that code and run it .But it should delete all the even numbers in the list. But it left some of them .Please check it and give me a solution.
Huh Huh Huh
you should not modify numbers while iterating over it

numbers = [2,8,6,12,13,9,5]
odd_numbers = []
for number in numbers:
    if number % 2: # number is odd
        odd_numbers.append(number)
print(odd_numbers)
or simply
numbers = [2,8,6,12,13,9,5]
odd_numbers = [number for number in numbers if number % 2]
print(odd_numbers)
Thanks