from timeit import Timer
def m1():
l = range(100000)
for i in l:
l[i] *= 2
def m2():
l = range(100000)
l = map(lambda i:i*2,l)
if __name__ == '__main__':
t1 = Timer('m1()','from __main__ import m1')
print t1.timeit(100)
t2 = Timer('m2()','from __main__ import m2')
print t2.timeit(100)
时间m2成本大于m1成本,你能解释一下原因吗?你知道吗
映射函数的实现是什么,它使用迭代器吗?你知道吗
谢谢
在
m2
中,通过对lambda函数的函数调用来执行计算。即使它是一条单行线,它仍然符合函数的条件,因此具有函数调用的成本。此外,
m2
创建一个新列表并将其分配给变量l
,还需要考虑创建新列表的成本。在
m1
中,计算的代价很简单,因此m1
最终会更快。m1
步骤:l
中创建列表l
中的每一项都有2个m2
步骤:l
中创建列表l
创建新的listl
相关问题 更多 >
编程相关推荐