Я изо всех сил пытаюсь понять, почему мой сценарий Python дает мне идентичные ответы для первых двух методов, которые у меня есть, но для третьего метода мне нужно запустить процесс как минимум 3 раза, чтобы получить правильный ответ.
Я понимаю, что мой первый метод может быть наиболее эффективным, но я пытаюсь понять , почему третий метод не достигает того же результата в первый раз.
Код размещен ниже, спасибо!
# Sanity check - Modular [remainder] divison in loops
# Python Libraries
from random import randint
# Create a list of 50 random integers between 0 and 1000
randomNumbers = []
for i in range(100):
randomInt = randint(0, 1000)
randomNumbers.append(randomInt)
print("List of 50 values: ", randomNumbers,"\n")
##########################################################
# METHOD 1: Remove odd numbers - New list based
newList = [x for x in randomNumbers if x % 2 == 0]
print('List comprehension method...')
print('\t > List length = '+str(len(newList)))
print(newList)
print('\n')
# METHOD 2: Keep even numbers - Loop Based
evenList = []
for i in randomNumbers:
if i % 2 == 0:
evenList.append(i)
print("List append method...")
print('\t > List length = '+str(len(evenList)))
print(evenList)
print('\n')
# METHOD 3: Remove odd numbers - Loop Based
counter = 0
# > Loop 1
for i in randomNumbers:
if i % 2 != 0:
randomNumbers.remove(i)
counter += 1
print("Loop run: "+str(counter))
print('\t > List length = '+str(len(randomNumbers)))
print(randomNumbers)
# > Loop 2
for i in randomNumbers:
if i % 2 != 0:
randomNumbers.remove(i)
counter += 1
print("Loop run: "+str(counter))
print('\t > List length = '+str(len(randomNumbers)))
print(randomNumbers)
# > Loop 3
for i in randomNumbers:
if i % 2 != 0:
randomNumbers.remove(i)
counter += 1
print("Loop run: "+str(counter))
print('\t > List length = '+str(len(randomNumbers)))
print(randomNumbers)
# > Loop 4
for i in randomNumbers:
if i % 2 != 0:
randomNumbers.remove(i)
counter += 1
print("Loop run: "+str(counter))
print('\t > List length = '+str(len(randomNumbers)))
print(randomNumbers)