python 3.7中的地图vs列表vs循环

时间:2019-02-25 12:48:34

标签: python python-3.x performance list-comprehension python-3.7

当阅读有关Loop vs List comprehension vs Map速度的文章时,我通​​常会发现使用lambda函数时,列表理解要比map快。

这是我正在运行的测试:

import timeit

def square(range):
    squares = []
    for number in range:
        squares.append(number*number)
    return squares

print(timeit.timeit('map(lambda a: a*a, range(100))', number = 100000))
print(timeit.timeit('[a*a for a in range(100)]', number = 100000))
print(timeit.timeit('square(range(100))', 'from __main__ import square', number = 100000))

和结果:

0.03845796199857432
0.5889980600004492
0.9229458660011005

因此,使用lambda函数可以使Map明显胜出。 python 3.7是否进行了更改,导致速度显着提高?

1 个答案:

答案 0 :(得分:2)

首先,要进行票价比较,必须将$sql .= " WHERE NumberID LIKE '%$search_term%'"; 函数的结果转换为list。 Python 3.X中的map返回一个迭代器对象而不是列表。第二,在CPython实现中,内置函数实际上是c函数的包装器,这使它们比具有相同功能的任何Python代码都快,尽管在内置函数中使用map时,实际上是在打破链条这将使其速度几乎与Python代码一样快。

另一个重要的一点是,列表理解只是常规循环中的一种语法糖,您可以使用它来避免额外的函数调用,例如追加到列表等。