lambda、map、reduce、filter函数讲解
# coding:utf-8 """
几个特殊的函数:
lambda
lambda后面直接跟变量
变量后面是冒号
冒号后面是表达式,表达式计算结果就是本函数的返回值
作用:没有给程序带来性能上的提升,带来的是代码的简洁
map
格式:map(func, seq) func是一个函数,seq是一个序列对象
最终结果得到一个list
执行时,序列对象中的每个元素,从左到右的顺序,一次被取出来,并塞入到func那个函数中
map是上下运算
reduce
reduce是横向逐个元素进行运算
filter
过滤器
""" # lambda 功能的三种实现方式 # 最原始方式
def lambda_test():
def add(x):
x += 3
return x
numbers = range(10)
new_numbers = []
for i in numbers:
new_numbers.append(add(i))
return new_numbers # 列表解析的方式,推荐使用
def lambda_test2():
return [i+3 for i in range(10)] # lambda方式实现
def lambda_test3():
lam = lambda x:x+3 # 一行表示了add方法
numbers = range(10)
n2 = []
for i in numbers:
n2.append(lam(i))
return n2 # lambda 多参数
def lambda_test4(x,y):
g = lambda x,y:x+y #计算x+y
print g #返回的是方法名地址 <function <lambda> at 0x0000000002A2AB38>
return g(x,y) # lambda多参改进
def lambda_test5(x,y):
return (lambda x,y:x+y)(x,y) """
map
"""
# lambda_test的功能也能通过map实现
def map_test():
def add(x):
x += 3
return x
numbers = range(10)
return map(add, numbers) # map改进,lambda实现函数
def map_test2():
numbers = range(10)
return map(lambda x:x+3, numbers) # 列表解析实现map的功能
def map_test3():
return [i+3 for i in range(10)] # map的优雅(多参)
def map_test4():
list1 = range(1,6)
list2 = range(6,11)
return map(lambda x,y:x+y, list1, list2) # zip方式实现map_test4功能
def map_test5():
list1 = range(1,6)
list2 = range(6,11)
lst = zip(list1, list2)
return [x+y for x,y in lst] # reduce
def reduce_test():
return reduce(lambda x,y:x+y, range(10)) # for循环实现
def reduce_test2():
lam = lambda x,y:x+y
numbers = range(10)
sum_number = 0
for i in numbers:
sum_number += i
return sum_number # 列表解析器操作,不能复用,函数发生变化,列表解析器就失效了
def reduce_test3():
return sum([x for x in range(10)]) #练习
#两个list,a=[3,9,8,5,2],b=[1,4,9,2,6].计算a[0]b[0]+a[1]b[1]+...的结果
#方法1:
def test():
a,b = [3,9,8,5,2],[1,4,9,2,6]
lst = zip(a,b)
return sum(x*y for x,y in lst)
#方法2
def test2():
a,b = [3,9,8,5,2],[1,4,9,2,6]
lst = zip(a,b)
return reduce(lambda x,y:x+y, [m*n for m,n in lst])
# 方法3, lambda、map、reduce都使用上了
def test3():
a,b = [3,9,8,5,2],[1,4,9,2,6]
return reduce(lambda x,y:x+y,map(lambda x,y:x*y, a,b)) #filter
def filter_test():
numbers = range(-5,5)
print numbers
return filter(lambda x:x>0, numbers) # 列表解析器执行filter
def filter_test2():
numbers = range(-5,5)
return [x for x in numbers if x>0] if __name__ =="__main__":
print "----lambda-------"
print lambda_test()
print lambda_test2()
print lambda_test3()
print lambda_test4(3,4)
print lambda_test5(5,6)
print "-----map-----"
print map_test()
print map_test2()
print map_test3()
print map_test4()
print map_test5()
print "-------reduce-------"
print reduce_test()
print reduce_test2()
print reduce_test3()
print "----exercise--------"
print test()
print test2()
print test3()
print "-----filter----------"
print filter_test()
print filter_test2()
执行的结果是:
----lambda-------
[, , , , , , , , , ]
[, , , , , , , , , ]
[, , , , , , , , , ]
<function <lambda> at 0x0000000002A792E8> -----map-----
[, , , , , , , , , ]
[, , , , , , , , , ]
[, , , , , , , , , ]
[, , , , ]
[, , , , ]
-------reduce------- ----exercise-------- -----filter----------
[-, -, -, -, -, , , , , ]
[, , , ]
[, , , ]
lambda、map、reduce、filter函数讲解的更多相关文章
- python 函数式编程之lambda( ), map( ), reduce( ), filter( )
lambda( ), map( ), reduce( ), filter( ) 1. lambda( )主要用于“行内函数”: f = lambda x : x + 2 #定义函数f(x)=x+2 g ...
- Python学习:函数式编程(lambda, map() ,reduce() ,filter())
1. lambda: Python 支持用lambda对简单的功能定义“行内函数” 2.map() : 3.reduce() : 4.filter() : map() ,reduce() , filt ...
- python中lambda,map,reduce,filter,zip函数
函数式编程 函数式编程(Functional Programming)或者函数程序设计,又称泛函编程,是一种编程范型,它将计算机运算视为数学上的函数计算,并且避免使用程序状态以及易变对象.简单来讲,函 ...
- Python: lambda, map, reduce, filter
在学习python的过程中,lambda的语法时常会使人感到困惑,lambda是什么,为什么要使用lambda,是不是必须使用lambda? 下面就上面的问题进行一下解答. 1.lambda是什么? ...
- map/reduce/filter/lambda
Python内建了map()/reduce()/filter()函数. map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的It ...
- python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))
1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层的函数,可以把复杂的任务分解成简单的任务,这种一步一步的分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...
- Python map/reduce/filter/sorted函数以及匿名函数
1. map() 函数的功能: map(f, [x1,x2,x3]) = [f(x1), f(x2), f(x3)] def f(x): return x*x a = map(f, [1, 2, 3, ...
- Python-函数式编程-map reduce filter lambda 三元表达式 闭包
lambda 匿名函数,核心是作为算子,处理逻辑只有一行但具有函数的特性,核心用于函数式编程中 三元运算符 其实本质上是if分支的简化版,满足条件返回 if 前面的值,不满足条件返回 else后面的值 ...
- [python基础知识]python内置函数map/reduce/filter
python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法) ...
- Python高阶函数_map/reduce/filter函数
本篇将开始介绍python高阶函数map/reduce/filter的用法,更多内容请参考:Python学习指南 map/reduce Python内建了map()和reduce()函数. 如果你读过 ...
随机推荐
- 解决报错error the @annotation pointcut expression is only supported at Java 5
eclipse搭建环境后报错 error the @annotation pointcut expression is only supported at Java 5 错误意思大致是:注释切入点表达 ...
- Python-JS (JS介绍~JS的基础数据类型)
目录一.JS语言介绍: 1.JS概念 2.JS组成 二.JS的三种存在位置(引入方式): 1.行间式: 2.内联式: 3.外联式: 三.JS出现的具体位置: 四.JS语法规范 五.JS中变量的定义 E ...
- 【ES】学习8-聚合1
参考资料: https://elasticsearch.cn/book/elasticsearch_definitive_guide_2.x/_combining_the_two.html 特定概念: ...
- 目标检测-yolo
论文下载:http://arxiv.org/abs/1506.02640 代码下载:https://github.com/pjreddie/darknet 1.创新点 端到端训练及推断 + 改革区域建 ...
- ural1855 线段树区间更新+推公式维护一元二次式
和威威猫系列故事差不多,都是根据条件推出公式 /* 操作c a b d:a到b道路上的所有边权值加d 操作e a b:问a到b中包含的道路的平均权值 区间平均值=所有可能路径权值/所有路径数, 而路径 ...
- pytest七:assert断言
断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了.什么是断言呢?简单来讲就是实际结果和期望结果去对比,符合预期那就测试 pass,不符合预期那就测试 failed py ...
- [转] Java接口_interface_implements
相对抽象类来讲,接口就是比抽象类还要抽象的抽象类,丝毫不带半点实现的内容.接口可以更加规范的对子类进行约束.接口全面地专业地实现了:规范和具体实现的分离.接口就是规范,定义的是一组规则,提现了现实世界 ...
- POJ 3579 3685(二分-查找第k大的值)
POJ 3579 题意 双重二分搜索:对列数X计算∣Xi – Xj∣组成新数列的中位数 思路 对X排序后,与X_i的差大于mid(也就是某个数大于X_i + mid)的那些数的个数如果小于N / 2的 ...
- python学习之条件语句(if循环)
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块.可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非空(null)值为tru ...
- Swagger 常用注解
一.Swagger常用注解 1.与模型相关的注解 两个注解: @ApiModel:用在模型类上,对模型类做注释: @ApiModelProperty:用在属性上,对属性做注释 2.与接口相关的注解 六 ...