0
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成本,你能解释为什么吗?Python - 为什么使用map比遍历列表花费更多的时间?
和map函数的实现是什么,它使用迭代器吗?
由于
你是比较苹果和橘子。一个是建立一个新的列表,另一个是就地修改列表。所以这肯定会影响运行时间。 –
你应该在列表的每个元素上调用你的lambda函数,而不是'l [i] * = 2';那也会减缓'm1'。 – Evert
是的,运算符比函数调用更快。 –