# 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函数讲解的更多相关文章

  1. python 函数式编程之lambda( ), map( ), reduce( ), filter( )

    lambda( ), map( ), reduce( ), filter( ) 1. lambda( )主要用于“行内函数”: f = lambda x : x + 2 #定义函数f(x)=x+2 g ...

  2. Python学习:函数式编程(lambda, map() ,reduce() ,filter())

    1. lambda: Python 支持用lambda对简单的功能定义“行内函数” 2.map() : 3.reduce() : 4.filter() : map() ,reduce() , filt ...

  3. python中lambda,map,reduce,filter,zip函数

    函数式编程 函数式编程(Functional Programming)或者函数程序设计,又称泛函编程,是一种编程范型,它将计算机运算视为数学上的函数计算,并且避免使用程序状态以及易变对象.简单来讲,函 ...

  4. Python: lambda, map, reduce, filter

    在学习python的过程中,lambda的语法时常会使人感到困惑,lambda是什么,为什么要使用lambda,是不是必须使用lambda? 下面就上面的问题进行一下解答. 1.lambda是什么? ...

  5. map/reduce/filter/lambda

    Python内建了map()/reduce()/filter()函数. map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的It ...

  6. python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))

    1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层的函数,可以把复杂的任务分解成简单的任务,这种一步一步的分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...

  7. 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, ...

  8. Python-函数式编程-map reduce filter lambda 三元表达式 闭包

    lambda 匿名函数,核心是作为算子,处理逻辑只有一行但具有函数的特性,核心用于函数式编程中 三元运算符 其实本质上是if分支的简化版,满足条件返回 if 前面的值,不满足条件返回 else后面的值 ...

  9. [python基础知识]python内置函数map/reduce/filter

    python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法) ...

  10. Python高阶函数_map/reduce/filter函数

    本篇将开始介绍python高阶函数map/reduce/filter的用法,更多内容请参考:Python学习指南 map/reduce Python内建了map()和reduce()函数. 如果你读过 ...

随机推荐

  1. 常用的Unicode值范围

    汉字:[0x4e00,0x9fa5](或十进制[19968,40869])数字:[0x30,0x39](或十进制[48, 57])小写字母:[0x61,0x7a](或十进制[97, 122])大写字母 ...

  2. Python-JS (JS介绍~JS的基础数据类型)

    目录一.JS语言介绍: 1.JS概念 2.JS组成 二.JS的三种存在位置(引入方式): 1.行间式: 2.内联式: 3.外联式: 三.JS出现的具体位置: 四.JS语法规范 五.JS中变量的定义 E ...

  3. 用Kotlin破解Android版微信小游戏-跳一跳

    前言 微信又更新了,从更新日志上来看,似乎只是一次不痛不痒的小更新.不过,很快就有人发现,原来微信这次搞了个大动作——在小程序里加入了小游戏.今天也是朋友圈被刷爆的缘故. 看到网上 有人弄了一个破解版 ...

  4. PHP数学常用函数

    PHP数学常用函数 函数名 描述 实例 abs() 求绝对值 $abs = abs(-4.2); //4.2 fmod() 浮点数取余 $x = 5.7;$y = 1.3;$r = fmod($x, ...

  5. 性能测试二十五:redis-cli 命令总结

    常用命令dbsize:查看redis中的kv数量 keys *:查看redis中所有的keyset key_1 v_1:新增一个key_1,包含v_1get key_1:查看key_1中的内容del ...

  6. 性能测试十七:liunx下jmeter结果报表、html报表

    控制台日志,只能看出整体的数据,若只是测单接口,这个最好用,但若有多个接口时,无法分别展示,所以需要换另外一种报表 四种方式来获取Jmeter的结果报表 一.在GUI模式下跑Jmeter的脚本,用tp ...

  7. Masm615+notepad++6.8.8搭建汇编开发环境

    前言:很早以前搭过,做了笔记的.现在重新玩汇编,按照笔记撘环境,谁知道坑了自己两个小时,气的我现在打字手都在抖 准备工作: 1.Masm615汇编环境,下载地址:https://pan.baidu.c ...

  8. 2018-2019-2 网络对抗技术 20165333 Exp1 PC平台逆向破解

    1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串.该程序同 ...

  9. URL中带加号的处理

    问题起因:      客户订购了一关键字为"e+h 变送器" , 在首页推荐广告中,会根据用户在search 搜索过的关键字进行一个匹配投放.技术实现是UED 通过JS 获取coo ...

  10. Zookeeper笔记(一)初识Zookeeper

    为什么需要Zookeeper Zookeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知.集群管理.Master选举 ...