美文网首页
跳出for循环的坑

跳出for循环的坑

作者: 李涛AT北京 | 来源:发表于2019-09-20 23:50 被阅读0次
  • Python 语言学习成本低,写出来很像伪代码,可读性高,等等有很多显而易见的优点。相比于其他语言,Python 几乎总是最慢的。导致 Python 我们运行一个脚本的时候,无力吐槽。最恐怖的还是python中的for循环,异常的慢,但是工程中一个项目的周期是有要求的,我们如何让我们的代码跑起来呢?

少写for循环

  • 这里所得是少写,而不是不写。有的时候是避免不了的,但是能避免我们还是一定不要写。下面展示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)
  • 我们知道ms/µs/ns之间的换算单位是1000为刻度。可以看出,for循环最慢,map函数最快,map函数是for循环的1.99*1000*1000/457=4354.5倍,numpy也跑出不错的成绩,numpy底层是C语言写的,大概是for循环的1.99*1000/39.1=50.9倍。这还是1万的数据量,在工程中动不动千万,数十亿的数据,更显的for循环的慢慢慢。所以尽量不要写for循环。

相关文章

  • 跳出for循环的坑

    Python 语言学习成本低,写出来很像伪代码,可读性高,等等有很多显而易见的优点。相比于其他语言,Python ...

  • 循环语句

    for循环 while循环 break跳出整个循环,continue跳出当前循环.

  • 循环嵌套的时候,跳出多重循环

    跳出双重for循环。正常使用break的话只能跳出内层循环,想跳出多重循环可通过label跳出.

  • 跳出循环方法for

    1.跳出多层循环 2.break 是跳出循环体 break只能跳出单层循环 3.continue 是跳出这次循环,...

  • C语言:return,break,continue

    return:跳出循环,退出函数 break :跳出循环,执行循环后的下一个步骤 continue :跳出当前循环...

  • 00算法前言和总结

    continue : 跳出此次循环,直接下一循环 break : 跳出整个循环 return: 跳出函数

  • Kotlin 视频笔记二

    (2018.7.20) 函数定义 循环 for in 高级循环 forEach 跳出循环 支持:break (跳出...

  • 注意forEach不能使用return跳出循环

    一直混淆了概念—关于跳出循环或终止方法,认为一般循环return就可以终止,踩坑的是for Each使用retur...

  • FOUR DAY

    break只能跳出自己循环,跳出其他循环的加标签loop continue 跳出本次循环,继续向下执行 retur...

  • 跳出 Block 的坑 --- weak-strong danc

    跳出 Block 的坑 使用过 Block 的开发者都有一个意识就是,要防止 retain cycel(循环引用)...

网友评论

      本文标题:跳出for循环的坑

      本文链接:https://www.haomeiwen.com/subject/oadsuctx.html