之前在某个资料上看的,于是轻信了。最近刚好用到map,于是就顺手做了一次验证。结果居然打了脸。
主要功能:对一个整数列表的所有元素进行平方运算。并使用timeit进行时间统计。
我们分别使用map函数、列表推导式、for循环傻瓜式三种方式进行处理。并计算出每一种方式执行100次的总耗时。
实验环境:
- window10
- python2.7
- pycharm
代码如下:
def xunhuan(x):
return x ** 2
num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def m1():
ret = map(xunhuan, num)
return ret
def m2():
ret = [item ** 2 for item in num]
return ret
def m3():
ret = []
for item in num:
ret.append(item ** 2)
return ret
times = timeit.timeit(stmt="m1()", setup="from __main__ import m1", number=100)
print ('m1 map total time is {}'.format(times))
times = timeit.timeit(stmt="m2()", setup="from __main__ import m2", number=100)
print ('m2 total time is {}'.format(times))
times = timeit.timeit(stmt="m3()", setup="from __main__ import m3", number=100)
print ('m3 total time is {}'.format(times))
打印结果是:
m1 map total time is 0.000786878907492
m2 total time is 0.000181616484887
m3 total time is 0.000257887856918
从结果看出,map函数的处理速度最慢。其次是for循环傻瓜式,最快的居然是列表推导式。
map执行时间是列表推导式的4倍耗时,for循环和列表推导性能不相上下,但是列表推导要比for循环厉害。
不知道读到此处的读者有什么不同意见,欢迎留言来怼。