# 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. Project Euler Problem8

    Largest product in a series Problem 8 Find the greatest product of five consecutive digits in the 10 ...

  2. Qt5.8 在windows下mingw静态编译

    官方对编译一些条件介绍:https://doc.qt.io/qt-5/windows-requirements.html 在默认情况下,用QtCreator编译程序时,使用的是动态编译.编译好的程序在 ...

  3. GO-time.after 用法

    初学GO,time包里sleep是最常用,今天突然看到一个time.after,特记录time.after用法笔记如下: 首先是time包里的定义 // After waits for the dur ...

  4. LoadRunner性能测试入门教程

    javaweb性能测试那些事 一:什么是javaweb性能测试: 二:javaweb性能测试基本流程 三:javaweb性能测试常用指标: 1:响应时间:2-5-8 原则 2:吞吐量 3:资源使用率 ...

  5. struts2的文件上传和文件下载

    实现使用Struts2文件上传和文件下载: 注意点: (1)对应表单的file1和私有成员变量的名称必须一致 <input type="file" name="fi ...

  6. CCF CSP 201703-3 Markdown

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201703-3 Markdown 问题描述 Markdown 是一种很流行的轻量级标记语言(l ...

  7. #3 Codeforces-865C Gotta Go Fast(期望dp)

    题意:一个游戏一共有n个关卡,对于第i关,用a[i]时间通过的概率为p[i],用b[i]通过的时间为1-p[i],每通过一关后可以选择继续下一关或者时间清0并从第一关开始,先要求通过所有关卡的时间和不 ...

  8. [转]win7远程连接ubuntu14.04的相关配置,解决连接时灰屏

    如何设置可以远程操作 安装必要的远程桌面的软件:xfce,xrdp,vnc4server sudo apt-get update sudo apt-get install xfce4 sudo apt ...

  9. Python subprocess方法

    import subprocess #subprocess.call("df -h",shell=True,stdout=subprocess.PIPE)#打印到视图,但是不能保存 ...

  10. PhpStorm 中切换PHP版本

    PhpStorm 中默认的 PHP 版本是 PHP 5.4 ,PhpStorm 会以该版本对编辑器中的PHP文件进行自动校验.EX:PHP文件中,使用了 PHP 5.4 版本以上的新特性,由于 Php ...