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
是的,運算符比函數調用更快。 –