为什么两个循环方法第一次返回正确的结果,但是第三个方法需要运行三次才能达到正确的结果?

问题描述 投票:0回答:1

我正在努力理解为什么我的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)
python loops for-loop division
1个回答
0
投票

在以下代码中:

© www.soinside.com 2019 - 2024. All rights reserved.