python的reduce函数的使用方法详解以及使用案例,相加,相乘(处理一个序列,然后把序列进程合并操作)
1、求列表的数字相加之和,还是之前的习惯,写for循环来实现
num_1=[1,2,3,4,5,6,7,8,9]
a=0
for n in num_1:
#a=a+n
a+=n
print (a) C:\python35\python3.exe D:/pyproject/day14函数/reduce函数.py 45
2、优化一下改成函数形式
num_1=[1,2,3,4,5,6,7,8,9]#定义一个列表
def reduce_atest(array):#定义一个函数,需要传一个参数array
a=0
for n in array:
a+=n
return a#函数的返回值为这些数字相加的结果
print(reduce_atest(num_1))#把这个列表当成是函数的参数传给array C:\python35\python3.exe D:/pyproject/day14函数/reduce函数.py 45
3、专门定义函数用来做相乘运算
num_1=[1,2,3,4,5,6,7,8,9]
def xiangcheng(x,y):
return x*y
def reduce_atest(func,array):
a=1
for n in array:#开始循环array这个列表,也就是num里面的数字
a=func(a,n)#func就是xiangcheng这个函数,需要传2个参数,a是初始的1,n是迭代的数字
return a
print(reduce_atest(xiangcheng,num_1))#传2个参数 一个是处理方式,一个是可迭代的对象,传给了func和array C:\python35\python3.exe D:/pyproject/day14函数/reduce函数.py 362880
4、在继续优化,把自定义函数换成lambda
num_1=[1,2,3,4,5,6,7,8,9]
def reduce_atest(func,array):
a=1
for n in array:#开始循环array这个列表,也就是num里面的数字
a=func(a,n)#func就是xiangcheng这个函数,需要传2个参数,a是初始的1,n是迭代的数字
return a
print(reduce_atest(lambda x,y:x*y,num_1))#传2个参数 一个是处理方式,一个是可迭代的对象,传给了func和array C:\python35\python3.exe D:/pyproject/day14函数/reduce函数.py 362880
#lambda x,y:x*y,() 等价于下面2行,之前的map filter用了好多次了
# def xiangcheng(x,y):
# return x*y
5、由于函数里面的a=1这个是写死了的,这样是太好的,因为是列表里面的数字相乘,我们可以在第一步就把第一个数字拿出来,在循环的时候在相乘
num_1=[1,2,3,4,5,6,7,8,9]
def reduce_atest(func,array):
a=array.pop(0)#第一步这时候a等于列表里面取出来的第一个数字
for n in array:#开始循环array这个列表,从第二个数字开始了
a=func(a,n)#func就是xiangcheng这个函数,需要传2个参数,a是初始的1,n是迭代的数字
return a
print(reduce_atest(lambda x,y:x*y,num_1))#传2个参数 一个是处理方式,一个是可迭代的对象,传给了func和array C:\python35\python3.exe D:/pyproject/day14函数/reduce函数.py 362880
6、在修改下增加一个功能,增加一个用户可以指定什么数字开头作为一个基数,这个基数乘以列表里面的数字,比方说10*[1,2,3,4,5,6,7,8,9] 22*[1,2,3,4,5,6,7,8,9]
思路就是增加一个函数的默认参数,如果用户不传,就没有这个默认参数,如果传了,就以这个数字作为基数,再乘以列表里面的数字
num_1=[1,2,3,4,5,6,7,8,9]
def reduce_atest(func,array,init=None):
if init == None:
a=array.pop(0)
else:
a=init
for n in array:
a=func(a,n)
return a
print(reduce_atest(lambda x,y:x*y,num_1,2)) C:\python35\python3.exe D:/pyproject/day14函数/reduce函数.py 725760
7、reduce函数
map把所有的元素在原有的基础之上处理一下(每个元素自增1 自检1)
filter遍历序列中的每个元素,判断每个元素得到布尔值,如果True则留下来(判断看电影的人是不是sb,说话的就是sb(判断字符串是否以sb开头,sb结尾))
reduce可以把列表中的整体的数据合并到一处,得到一个结果
reduce 处理一个序列,然后把序列进程合并操作
reduce的使用,在使用之前得先导入模块,在python2.7中可以直接使用
from functools import reduce
num_1=[1,2,3,4,5,6,7,8,9]
print(reduce(lambda x,y:x*y,num_1)) C:\python35\python3.exe D:/pyproject/day14函数/reduce函数.py 362880
reduce也可以加基数
from functools import reduce
num_1=[1,2,3,4,5,6,7,8,9]
print(reduce(lambda x,y:x*y,num_1,10)) C:\python35\python3.exe D:/pyproject/day14函数/reduce函数.py 3628800
8、把列表里面的所有元素相加
from functools import reduce
num=[1,5,6,2,7,8]
print((reduce(lambda x,y:x+y,num))) C:\python35\python3.exe D:/pyproject/day14函数/reduce函数.py 29
python的reduce函数的使用方法详解以及使用案例,相加,相乘(处理一个序列,然后把序列进程合并操作)的更多相关文章
- python的map函数的使用方法详解以及使用案例(处理每个元素的自增、自减、平方等)
1.用我们之前学过的求一下平方(只有一个列表) #求平方 num=[1,5,6,2,7,8] a=[] for n in num: a.append(n**2) print (a) C:\python ...
- python的filter函数的使用方法详解以及使用案例,是否以什么结尾,是否大于什么(判断是True,则留下来)
1.总共有3个人看电影,有2个人看电影经常说话,我们把他们两个过滤出去 move_people=["gouguoqi","beiye_sb","xiu ...
- python的内置模块random随机模块方法详解以及使用案例(五位数随机验证码的实现)
1.random(self): Get the next random number in the range [0.0, 1.0) 取0到1直接的随机浮点数 import random print( ...
- Python调用C/C++动态链接库的方法详解
Python调用C/C++动态链接库的方法详解 投稿:shichen2014 这篇文章主要介绍了Python调用C/C++动态链接库的方法,需要的朋友可以参考下 本文以实例讲解了Python调用C/C ...
- Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)
Python 在子类中调用父类方法详解(单继承.多层继承.多重继承) by:授客 QQ:1033553122 测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...
- python中验证码连通域分割的方法详解
python中验证码连通域分割的方法详解 这篇文章主要给大家介绍了关于python中验证码连通域分割的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需 ...
- python的dict()字典数据类型的方法详解以及案例使用
一.之前的回顾 # int 数字 # str 字符串 # list 列表 # tuple 元组 # dict 字典 字典中最重要的方法 keys() values() items() get upd ...
- 【Python】Linux crontab定时任务配置方法(详解)
CRONTAB概念/介绍 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行. cron 系统调度进程. 可以使用它在 ...
- python的匿名函数 lambda的使用方法详解以及使用案例
1.匿名函数是用lambda这个关键字定义 lambda x:x+1 第一个x代表形参,x+1相当于函数的返回值 #lambda x:x+1 第一个x代表形参,x+1相当于函数的返回值 def ...
随机推荐
- OO第一阶段作业总结
对于OO这门课,学长学姐偶尔提起,大家都略有耳闻,但是并没有将其和计组相提并论.因此,在刚开始接触的时候,并不认为其会比计组难到哪里去,然而事实证明,还是不要想当然去判断,以及不提前学好JAVA对于O ...
- Spring笔记①--helloworld
Spring Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架,它主要是为了解决企业应用开发的复杂性而诞生的: 目的:解决企业应用开发的复杂性 功能:使用基本的Javabean ...
- 第一次Sprint计划
目标: 各成员先学习基于eclipse开发android应用软件的基本技术(砍柴要先磨刀,工具都没怎么做) 先弄一个简单的四则运算答题功能看看程序是否能在手机上运行 (以上为冲刺一内容) 时间: 5月 ...
- thinkphp学习3-模板与视图
1.模板赋值 如果要在模板中输出变量,必须在在控制器中把变量传递给模板,系统提供了assign方法对模板变量赋值,无论何种变量类型都统一使用assign赋值. $this->assign('na ...
- Linux操作系统(二)
SSD工作原理:http://www.360doc.com/content/15/0318/15/16824943_456186965.shtml HHD工作原理:http://blog.csdn.n ...
- win7系统安装SQLServer2000的详细步骤(图文)
首先,如果以前安装的话,要删除干净.我也找了半天的网络资料.1.把原来SQLServer的安装目录 C:\Program Files\Microsoft SQL Server 删除2.所有SQLSe ...
- scrapy-scrapy如何打开页面?[转]
一.首先我们来看scrapy spider如何打开页面: 要打开页面,我们用的是手,同样scrapy也有一个得力助手:spider:至于spider如何打开页面,且听我娓娓道来,如果一上来就噼里啪啦的 ...
- [转帖]“剖开” LinuxONE 和 Exadata,架构专家解读里面到底有什么
“剖开” LinuxONE 和 Exadata,架构专家解读里面到底有什么 http://server.zhiding.cn/server/2018/0914/3111044.shtml 说起I ...
- 聚合函数count里面加条件
聚合函数中如果想汇总某一类数据,可以在括号中增加条件: sum(case when 字段>0 then 1 else 0 end) as 字段 *注意:count(case when 字段> ...
- BZOJ 2143 飞飞侠(分层最短路)
飞飞国是一个N×M的矩形方阵,每个格子代表一个街区.然而飞飞国是没有交通工具的.飞飞侠完全靠地面的弹射装置来移动.每个街区都装有弹射装置.使用弹射装置是需要支付一定费用的.而且每个弹射装置都有自己的弹 ...