这两个“for”语句中的哪一个更有效?

时间:2013-12-15 19:59:26

标签: python performance

以下两个代码中的哪一个更有效? (时间和记忆)。

aList = [0,1,2,3,4,5,6,7,8,9]
for num in aList:
    if (num % 2 == 0):
        aList.pop(num)

aList = [0,1,2,3,4,5,6,7,8,9]
for num in range(10):
    if (num % 2 == 0):
        aList.pop(num)

所以basiccaly我要问的是“for a list:”和“for num in range(10):”哪个更有效?

1 个答案:

答案 0 :(得分:1)

即使你的循环确实有效,pop也是O(n),所以你的循环非常低效。制作新的过滤列表并将其复制回

几乎总是更好
aList = [0,1,2,3,4,5,6,7,8,9]
aList[:] = [n for n in aList if n % 2]