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函数的使用方法详解以及使用案例,相加,相乘(处理一个序列,然后把序列进程合并操作)的更多相关文章

  1. python的map函数的使用方法详解以及使用案例(处理每个元素的自增、自减、平方等)

    1.用我们之前学过的求一下平方(只有一个列表) #求平方 num=[1,5,6,2,7,8] a=[] for n in num: a.append(n**2) print (a) C:\python ...

  2. python的filter函数的使用方法详解以及使用案例,是否以什么结尾,是否大于什么(判断是True,则留下来)

    1.总共有3个人看电影,有2个人看电影经常说话,我们把他们两个过滤出去 move_people=["gouguoqi","beiye_sb","xiu ...

  3. python的内置模块random随机模块方法详解以及使用案例(五位数随机验证码的实现)

    1.random(self): Get the next random number in the range [0.0, 1.0) 取0到1直接的随机浮点数 import random print( ...

  4. Python调用C/C++动态链接库的方法详解

    Python调用C/C++动态链接库的方法详解 投稿:shichen2014 这篇文章主要介绍了Python调用C/C++动态链接库的方法,需要的朋友可以参考下 本文以实例讲解了Python调用C/C ...

  5. Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)

    Python 在子类中调用父类方法详解(单继承.多层继承.多重继承)   by:授客 QQ:1033553122   测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...

  6. python中验证码连通域分割的方法详解

    python中验证码连通域分割的方法详解 这篇文章主要给大家介绍了关于python中验证码连通域分割的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需 ...

  7. python的dict()字典数据类型的方法详解以及案例使用

    一.之前的回顾 # int  数字 # str 字符串 # list 列表 # tuple 元组 # dict 字典 字典中最重要的方法 keys() values() items() get upd ...

  8. 【Python】Linux crontab定时任务配置方法(详解)

    CRONTAB概念/介绍 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行. cron 系统调度进程. 可以使用它在 ...

  9. python的匿名函数 lambda的使用方法详解以及使用案例

    1.匿名函数是用lambda这个关键字定义 lambda  x:x+1   第一个x代表形参,x+1相当于函数的返回值 #lambda x:x+1 第一个x代表形参,x+1相当于函数的返回值 def ...

随机推荐

  1. M1阶段的开发过程的一些反思

    今天八组队伍都做了项目的展示,和他们相比,我们的团队项目是显得最单薄的了,这里面的原因很多,固然我们团队整体的实力 比较弱,但是我们在M1项目开发过程中的种种错误表现也是导致我们项目失利的重要原因.下 ...

  2. 团队冲刺--Seven

    昨天: 司宇航:测试功能版块,优化功能版块. 马佳慧:优化界面 . 王金萱:合并程序. 季方:  合并程序. 今天: 司宇航:优化功能版块. 马佳慧:优化界面 . 王金萱:优化界面. 季方:  完善功 ...

  3. 手机端学习助手的说明书需求以及团队PM选择

    1.产品的背景 课堂上知识容量大.密度高,学生不能立刻掌握所学知识点,同时,网上资料冗杂繁复,指向性不强,导致学生不能高效的学习,为了充分利用学生的课余时间,培养学生自学能力,辅助老师教学,我们小组希 ...

  4. 除了C语言,C++······竟然还有Z语言?

    只能说自己见识短,头一次听说Z语言.先普及一下吧: Z语言是由牛津大学程序设计研究小组开发的一种形式语言,它是一种以一阶谓词演算为主要理论基础的规约语言,是一种功能性语言.Z语言是将事物的状态和行为用 ...

  5. POJ 2096 Collecting Bugs 期望dp

    题目链接: http://poj.org/problem?id=2096 Collecting Bugs Time Limit: 10000MSMemory Limit: 64000K 问题描述 Iv ...

  6. golang数据类型转换

    int--string //string到int value_int,err:=strconv.Atoi(string) //int到string str:=strconv.Itoa(value_in ...

  7. java属性编辑器,即PropertyEditor

    出处:http://www.iteye.com/topic/1123628

  8. SpringMVC运行原理浅析

    SpringMVC是主流的J2EEWEB层框架,SpringMVC是Sping家族中一个重要的产品.下面给出SpringMVC的运行原理.springmvc和spring无需通过中间层进行整合,spr ...

  9. teamcity和jmeter结合进行接口自动化测试

    (1)从teamcity官网下载jmeter插件:https://teamcity.jetbrains.com/repository/download/TeamCityPluginsByJetBrai ...

  10. loadrunner在win10破解提示:Cannot save the license information because acceses to the registry is denied的解决办法

    方法1 下图1-1中提示就是说明了破解的时候权限不足导致,解决办法就是使用管理员权限打开loadrunner破解就好了,但是右键“以管理员身份运行”选项打开loadrunner又是会提示1-2中的问题 ...