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)
答案 0 :(得分:3)
您的方法或多或少相同;选项2执行小更多工作;它必须为临时变量做一个额外的存储和名称查找。在实践中,差异很小,您应该更专注于代码可读性而不是过早优化。
对于特定的示例,您最好使用列表解析:
result = [foo(l) for l in mylist]
list comprehension用C代码构造列表,不必每次循环迭代都查找.append()
方法。
答案 1 :(得分:2)
我认为它们是相同的,但最好的选择是map(foo, mylist)
- 即使从性能的角度来看,因为append
会导致列表调整大小需要额外的时间
答案 2 :(得分:2)
你可能会在删除临时任务时获得一些性能提升,但请记住,过早优化是邪恶的,微优化不值得付出努力
当然还有更好的方法,例如
列表理解
mylist = [1,2,3,4,5,6,7,8,9,10]
result = [n*2 for n in mylist]
答案 3 :(得分:1)
result = [foo(i) for i in mylist]
是你想要的。