<p>在您的案例中,有不同的解决方案可用于生成子列表之和并将其作为元素附加,它们的性能可能会有所不同。你知道吗</p>
<p>已经在Win7上的python3.1.14x64下对10000个元素列表和10000个重复进行了测试</p>
<p>基于map()的soluiton,似乎是最快的。
解决方案使用itertools.starmap文件()和生成器表达式也可以在表演浪漫最后两个生产发电机iterools.starmap文件()您的lambda函数应该稍微更改一下。
第四种解决方案是列表理解。它似乎是最慢的。
您可以使用下面的代码来检查平台上的性能。你知道吗</p>
<pre><code>import timeit
import itertools
repeat=10000
#generating 10000 element test list
big_list=[[x,y] for x,y in enumerate(range(10000))]
#setting configuration for timeit.timeit
conf_expr="from __main__ import big_list,my_f"
#giving name for lambda
my_f=lambda x:x+[sum(x)]
#tesing
print("map test")
print(timeit.timeit("map(my_f,big_list)",conf_expr,number=repeat))
print("itertool test")
#changing lambda for itertools.starmap() and giving name
my_sum=lambda x,y:[x,y]+[sum((x,y))]
#chanding configuration for timeit.timeit
conf_expr_i="from __main__ import my_sum,big_list"
print(timeit.timeit("itertools.starmap(my_sum,big_list)",conf_expr_i,number=repeat))
print("generator expr. test")
print(timeit.timeit("(i+[sum(i)] for i in big_list)",conf_expr,number=repeat))
print("list comprehensions test")
print(timeit.timeit("[i+[sum(i)] for i in big_list]",conf_expr,number=repeat))
</code></pre>
<p><strong>输出</strong></p>
<pre><code>map test
0.00207904110842
itertool test
0.00228213246608
generator expr. test
0.0036744175886
list comprehensions test
52.2559879524
</code></pre>
<p>这在优化问题中可能很有趣:
<a href="http://www.python.org/doc/essays/list2str.html" rel="nofollow">http://www.python.org/doc/essays/list2str.html</a></p>