[英]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.