Python技巧——list comprehension 与 functools.reduce
来源:互联网 发布:网络安全工程入门书籍 编辑:程序博客网 时间:2024/05/21 06:01
Guido(python的设计者)说,每当我看到reduce
函数作用于一个non-trivial function(函数功能不那么直观的函数),我就想问自己,我当初为什么要设计如此蹩脚的内置函数,以至于我需要拿出纸和笔勾勾画画才能搞明白reduce
函数的真正意图,而且效率不见得比list comprehension高。所以,他一怒之下,在python3中,将reduce
贬为二等公民,也即,从内置函数降级为functools
内的一个函数。
这里我想为reduce
函数说几句话,有些情况下,reduce
函数比list compression
以及循环迭代,简洁强大的多的多。
考虑如下的需求,我们需要将由numpy.ndarray构成的sub_lists,再由这些sub_lists构成的list,进行累加(同等ndarray进行相加)求和时,我们该如何做?
不使用reduce
函数的情形:
topology = [3, 2, 1]biases = [np.random.randn(y, 1) for y in topology[1:]] # 由ndarray构成的sub_listsbs = [biases, biases, biases] # 由sub_lists构成的listt = [np.zeros(b.shape) for b in biases] # 基准值for b in bs: t = [x+y for x, y in zip(b, t)] # 第一层从list中取出sub_lists # 第二层从sub_lists中取出ndarrayprint(t)
我们来看reduce
函数的做法:
import functools def zip_sum(x, y): return [a+b for a, b in zip(x, y)]print(functools.reduce(zip_sum, bs))
所以reduce
:
避免了循环
避免了基准值的手动定义
0 0
- Python技巧——list comprehension 与 functools.reduce
- python技巧——list comprehension vs map
- Python——List Comprehension
- python技巧——使用list comprehension生成素数(prime number)
- Python map/reduce vs 列表推导式[list comprehension]
- python的 filter, map, reduce, lambda, list comprehension
- Python List Comprehension, Dictionary Comprehension
- python学习笔记——列表推导 list comprehension
- python list comprehension
- [python] List Comprehension
- Python学习笔记(三)——List Comprehension 和 Generator Expression
- Python 标准库——functools
- Python中的列表推导式(list comprehension)
- python map和list comprehension 效率比较
- Python列表推导式(List comprehension)
- python:列表推导式,list comprehension
- Python中的 list comprehension 以及 generator
- Python列表推导式(List comprehension)
- 深入理解Linux修改hostname
- 【手把手教你Maven】构建过程
- Nginx编译参数大全 configure参数中文详解
- Tizen web app开发示例(将2048移植到Tizen平台上)
- vs2015编译tcmalloc(gperftools2.4)
- Python技巧——list comprehension 与 functools.reduce
- 异常解决:Hadoop启动出现ssh无法解析主机名等错误提示
- 比较完整的Nginx配置文件nginx.conf常用参数中文详解
- Android 开发知识收藏夹
- 计算机网络---基础题目汇总七
- Jfinal 定时 任务
- 将本地的项目上传到github
- \backend\models\core\Config
- Java中equals()与hashCode()方法详解