当阅读有关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是否进行了更改,导致速度显着提高?
答案 0 :(得分:2)
首先,要进行票价比较,必须将$sql .= " WHERE NumberID LIKE '%$search_term%'";
函数的结果转换为list。 Python 3.X中的map
返回一个迭代器对象而不是列表。第二,在CPython实现中,内置函数实际上是c函数的包装器,这使它们比具有相同功能的任何Python代码都快,尽管在内置函数中使用map
时,实际上是在打破链条这将使其速度几乎与Python代码一样快。
另一个重要的一点是,列表理解只是常规循环中的一种语法糖,您可以使用它来避免额外的函数调用,例如追加到列表等。