Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 这两个中的哪一个;至于;语句更有效?_Python_Performance - Fatal编程技术网

Python 这两个中的哪一个;至于;语句更有效?

Python 这两个中的哪一个;至于;语句更有效?,python,performance,Python,Performance,以下哪两种代码更有效?(时间和记忆) 或 因此,基本上我要问的是,“列表中的for num:”和“范围(10)中的for num:”中的哪一个更有效?即使循环确实有效,pop是O(n),因此使循环非常低效。创建一个新的过滤列表并将其复制回来几乎总是更好的 aList = [0,1,2,3,4,5,6,7,8,9] aList[:] = [n for n in aList if n % 2] 它们都不起作用,所以性能问题根本就不存在。您应该研究一下模块。元组和弹出?即使您将其更改为列表,第一个版

以下哪两种代码更有效?(时间和记忆)


因此,基本上我要问的是,“列表中的for num:”和“范围(10)中的for num:”中的哪一个更有效?

即使循环确实有效,
pop
是O(n),因此使循环非常低效。创建一个新的过滤列表并将其复制回来几乎总是更好的

aList = [0,1,2,3,4,5,6,7,8,9]
aList[:] = [n for n in aList if n % 2]

它们都不起作用,所以性能问题根本就不存在。您应该研究一下模块。
元组
弹出
?即使您将其更改为列表,第一个版本也不会像您预期的那样运行,因为您正在修改正在迭代的列表。
aList=(0,1,2,3,4,5,6,7,8,9)
不是列表。即使使用列表,第一个版本也会在迭代时修改列表,这是错误的。而且这两个版本做的事情并不相同,所以比较效率是毫无意义的。
aList = [0,1,2,3,4,5,6,7,8,9]
for num in range(10):
    if (num % 2 == 0):
        aList.pop(num)
aList = [0,1,2,3,4,5,6,7,8,9]
aList[:] = [n for n in aList if n % 2]