python 除了速度慢 稳定性差 不够健壮 真的没有其他缺点 !!
正常使用python 基本编程就够了,但是正是因为 python的性能差,我们如果可以使用python高效编程将大大提高运行速率,顺便举个例子
上周在牛人的启发下 自己用python 实现了推荐系统常用的ALS 最小二乘算法,原来的大牛 人家使用的是嵌套list 来实现Matrix ,代码很健壮 ,相同的数据集迭代十次 ,基本上三四分钟,而我为了寻找其他途径的可能使用 defaultdict(lambda:list()) 来模拟Matrix ,发现性能差了非常大,我这个要迭代十次,大概三个小时。。。 耗时主要在 矩阵相乘阶段计算rmse损失值
后来我对 这部分代码做了相关优化,迭代十次的耗时压缩到了20分钟内,但是还是 有差距,后来我干脆直接把大牛的一部分矩阵相乘的代码拿来即用,耗时压缩到了13分钟,还是有差距,那这个时候的差距就不是代码问题,是你所选择的数据容器,你用dict 模拟矩阵 效率要差于嵌套的list,所以我们看 ,好的性能 源自你如何去选择好的数据容器和足够优化你的代码结构和逻辑。
python的 高阶编程其实一点也不深奥 ,集中于
1.列表推导 字典推导
- map filter reduce lambda表达式
- 装饰器 和属性装饰
4.生成器
5.动态属性 装饰
6.正确的使用拆箱装箱
7.上下文管理器
8.描述器
9.正确使用数据容器
https://www.cnblogs.com/keep-going2099/articles/8179177.html
https://www.cnblogs.com/wangjian8888/p/6111701.html
对我而言我认为 对生成器 yield还是有点模糊,其他的都比较容易理解
关于 生成器 yield 有一篇不错的文章
https://www.jianshu.com/p/babb4add9245