繁体   English   中英

使用结果值或函数在Python中添加列表

[英]append in a list in Python using result value or a function

从性能和编码风格的角度来看,这两种方法是否等效?

def foo(n):
    return n*2

# case 1 with ".append(function())"

mylist = [1,2,3,4,5,6,7,8,9,10]
result = list()
for l in mylist:
    result.append(foo(l))

# case 2 ".append(result)"

mylist = [1,2,3,4,5,6,7,8,9,10]
result = list()
for l in mylist:
    r = foo(l)
    result.append(r)

您的方法或多或少是等效的; 选项2 要做更多的工作; 它必须对临时变量进行额外的存储和名称查找。 实际上,两者之间的差异很小,您应该将重点放在代码的可读性上,而不是过早的优化。

对于您的特定示例,使用列表理解会更好:

result = [foo(l) for l in mylist]

列表理解使用C代码构造列表,而不必在每次循环迭代时都查找.append()方法。

我认为它们是相同的,但是最好的选择是map(foo, mylist) -即使从性能的角度来看,因为append可能会导致列表大小调整,这需要花费额外的时间

仅删除临时任务可能会获得一些性能提升,但是请记住,过早的优化是有害的,而微优化是不值得的

当然,有更好的方法可以做,例如

清单理解

mylist = [1,2,3,4,5,6,7,8,9,10]
result = [n*2 for n in mylist]
result = [foo(i) for i in mylist]

是你想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM