跳出for循环的坑

2019-09-20  本文已影响0人  李涛AT北京

少写for循环

# 生成一个列表

li=[1,2,3,4,5,6,7,8,9,1]*1000
len(li)
%%timeit
# 查看for循环的时间,
li_1 = []
for i in li:
    if i==9:
        li_1.append(1)
    elif i !=9:
        li_1.append(0)

li_1

运行结果

1.99 ms ± 23.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%%timeit
# 推导式实现
li_2 = [i//9 for i in li ]
li_2

运行结果

814 µs ± 15.1 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%%timeit
# 高阶函数map
map(lambda x: x//9, li)

运行结果

457 ns ± 4.1 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
import numpy as np
li_array = np.array(li)
%%timeit
# numpy实现
np.where(li_array!=9,0,1)

运行结果

39.1 µs ± 2.3 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
上一篇 下一篇

猜你喜欢

热点阅读