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 ...
随机推荐
- 用C给小学生出题目
用C给小学生出题目 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 600 300 • Es ...
- 20135234mqy-——信息安全系统设计基础第六周学习总结
处理器体系结构 4.1 Y86指令集体系结构 4.1.1程序员可见状态 Y86程序中的每条指令都会读取或修改处理器状态的某些部分,称为程序员可见状态. 4.1.2 Y86指令 4个指令:irmovl, ...
- 第二阶段每日站立会议Second Day
昨天我在手机端安装cpp后进行界面效果测试以及进一步完善 今天对图片显示的大小进行调整 遇到的问题:当图片太小时,显示一块灰色区域,不美观
- POJ 2411 Mondriaan's Dream 插头dp
题目链接: http://poj.org/problem?id=2411 Mondriaan's Dream Time Limit: 3000MSMemory Limit: 65536K 问题描述 S ...
- 在数组中找出两数之和为10的所有组合(JAVA)
/*利用冒泡排序实现*/ import java.util.Scanner;public class Paixun { public static void main(String[] args) { ...
- 安装/卸载 修改Config
参考地址:https://docs.microsoft.com/zh-cn/nuget/create-packages/source-and-config-file-transformations
- 关于VS2005中C#代码用F12转到定义时,总是显示从元数据的问题
元数据是:NET 程序集中的标记信息. 是在代码中选择了转到定义时候给定位的吧.因为没有找到源代码,VS通过反射读取元数据中的信息生成了那个. 解决方法: 1. 要把项目先添加到解决方案中. 2. 再 ...
- webservice(二)简单实例
1.建立WSDL文件 建立WSDL的工具很多,eclipse.zendstudio.vs都可以,我个人建议自己写,熟悉结构,另外自动工具对xml schame类型支持在类型中可能会报错. 下 ...
- ES6 学习1
https://www.jianshu.com/p/287e0bb867ae 1,let表示变量.const表示常量.let和const都是块级作用域.一个在函数内部,一个在代码块内部: const ...
- SpringBoot(六)_AOP统一处理请求
什么是AOP AOP 是一种编程范式,与编程语言无关: 将通用逻辑从业务逻辑中分离出来(假如你的业务是一条线,我们不在业务线上写一行代码就能完成附加任务!我们会把代码写在其他的地方): 具体实现 (1 ...