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]