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()函数. 如果你读过 ...
随机推荐
- windows下搭建eclipse关于python的开发环境及初始化参数配置
1.安装jdk 因为eclipse是java开发的,运行eclipse程序需要安装jdk 安装jdk以后需要配置java_home环境变量 2.安装python2.7(比较简单,此处略) 3.下载ec ...
- js动态添加未知新属性
1 前言 由于项目需要,需要实现获取服务器不同网卡扫局域网中的某种类型设备,然而不同服务器的网卡个数是不相同的,从而需要动态增加未知属性来统计不同网卡扫到的设备个数. 2 代码 function ni ...
- 错误/异常:java.io.FileNotFoundException: .\src\db.properties (系统找不到指定的路径。);的解决方法
1.异常视图 2.解决方法 与之相关的部分代码: static{ try { //读取db.properties Properties props = new Properties(); FileIn ...
- Oracle12c 性能优化攻略:攻略目录表
注:本文来源于 [美] Sam Alapati , Darl Kuhn , Bill Padfield 著 朱浩波 翻译 <Oracle Database 12C 性能优化攻略> ...
- python魔法函数(二)之__getitem__、__len__、__iter__
魔法函数会增强python类的类型,独立存在 __getitem class Company: def __init__(self, employees): self.employees = empl ...
- C++ code:main参数
main函数的参数结构为两项参数: int main(int argc,char** argv){……} main的参数由操作系统传递,所以比较特殊.两个形参名一般是采用习惯名称argc和argv,表 ...
- java 类字面常量,泛化的Class引用
类名.class 就是字面常量,代表的就是该类的Class对象引用.常量需要赋值给变量 简单,安全. 编译期接受检查,不需要像forName一样置于try/catch块中. 加载后不会进行初始化,初始 ...
- easyx的基础应用教程
引用 什么是 EasyX? 作者:EasyX EasyX 是针对 C++ 的图形库,可以帮助 C 语言初学者快速上手图形和游戏编程. 比如,可以用 VC + EasyX 很快的用几何图形画一个房子,或 ...
- ERROR 2003:Can't connect to MySQL server on 'localhost'
mysql出现10061错误解决办法 如果出现"ERROR 2003: Can't connect to MySQL server on 'localhost' (10061)", ...
- Arbitrage HDU1217
汇率转换问题: 怎么样才能套利 可以用Floyd算法: #include<bits/stdc++.h> using namespace std; ][]; int main() { int ...