Python为什么使用map比遍历列表花费更多的时间?

2024-04-25 02:04:36 发布

您现在位置:Python中文网/ 问答频道 /正文

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成本,你能解释一下原因吗?你知道吗

映射函数的实现是什么,它使用迭代器吗?你知道吗

谢谢


Tags: infromimportformaindefrange成本
1条回答
网友
1楼 · 发布于 2024-04-25 02:04:36

m2中,通过对lambda函数的函数调用来执行计算。即使它是一条单行线,它仍然符合函数的条件,因此具有函数调用的成本。
此外,m2创建一个新列表并将其分配给变量l,还需要考虑创建新列表的成本。

m1中,计算的代价很简单,因此m1最终会更快。

m1步骤:

  1. 在变量l中创建列表
  2. 列表l中的每一项都有2个

m2步骤:

  1. 在变量l中创建列表
  2. 通过lambda函数调用遍历list l创建新的list
  3. 将新列表赋给变量l

相关问题 更多 >