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 ...
 
随机推荐
- json转对象
			
1,引入依赖 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib& ...
 - Scrum Meeting 10.28
			
今天大部分同学仍停留在学习阶段,进度快的同学已经在配置SQLserver. 成员 今日完成任务 明日计划 所用时间 徐越 配置SQLserver,试用java程序连接数据库 学习servlet,htt ...
 - 20135234mqy   实验三:敏捷开发与XP实践
			
实 验 报 告 课程:Java 班级: 1352 姓名:mqy 学号:20135234 成绩: 指导教师:娄嘉鹏 实验日期:2015. ...
 - 20135313-exp1
			
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:吴子怡 学号:20135313 成绩: 指导教师:娄嘉鹏 实 ...
 - 对于Redis的了解
			
Redis :高性能的key-value数据库,支持存储的value类型包括字符串.链表.集合.有序集合.哈希类型. redis使用两种文件格式:全量数据和增量请求. 全量数据格式是将内存中的数据写入 ...
 - java8之重新认识HashMap(转自美团技术团队)
			
java8之重新认识HashMap 摘要 HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型.随着JDK(JavaDevelopmet Kit)版本的更新,JDK1.8对Ha ...
 - iOS成长之路-使用系统默认声音、震动
			
导入框架 代码片段 apple系统默认声音名称说明: 1.声音格式是MP3或m4r的需要转成caf格式(可先转成aif , aiff,然后修改后缀) 2.路径在/System/Library/Audi ...
 - mac上查找nginx安装位置
			
在终端输入: nginx -V 查看nginx版本及安装的本地位置 ngxin -v 查看nginx版本(此方法依然可以检测是否安装某一软件,如git,hg等)
 - mysql group by分组查询错误修改
			
select @@global.sql_mode;set @@sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR ...
 - 深度学习:卷积神经网络(convolution neural network)
			
(一)卷积神经网络 卷积神经网络最早是由Lecun在1998年提出的. 卷积神经网络通畅使用的三个基本概念为: 1.局部视觉域: 2.权值共享: 3.池化操作. 在卷积神经网络中,局部接受域表明输入图 ...