文档章节

python 匿名函数

罗布V
 罗布V
发布于 2016/04/16 11:15
字数 625
阅读 49
收藏 2

lambda

lambda最开始接触的时候是在.net开发的时候,感觉简化了很多的工作里面繁琐,总感觉lambda类似于c的宏定义,只是功能更加强大。

lambda 参数列表:表达式

下面的代码的作用是对两个数进行相加,通过下面的片段我们可以发现lambda函数的参数列表在左侧并且采用逗号进行分隔

sum=lambda x,y,z:x+y+z
print(sum(1,2,3))#返回6

下面的代码段就是不用匿名函数时的传统方式

def sum(x,y,z):
	return x+y+z
	
print(sum(1,2,3))

###有关map()函数 map()有两个函数

r = map(func, seq)

func:是一个函数的名称 seq:是一个(如列表)序列 map函数将将seq中的每一个对象进行迭代进行调用 func函数并且返回结果值 下面的代码段是将一个列表里面的所有的值乘以平方

def square(T):
	return T*T
temperatures = (1, 2, 3, 4, 5)
temperatures_in_Fahrenheit = list(map(square, temperatures))
print(temperatures_in_Fahrenheit) 
#返回的值[1, 4, 9, 16, 25]

下面我们用匿名方法来重写上面的功能

temperatures = (1, 2, 3, 4, 5)
temperatures_in_Fahrenheit = list(map(lambda T:T*T, temperatures))
print(temperatures_in_Fahrenheit)
#返回的值[1, 4, 9, 16, 25]

map可以对不同的列表进行计算,但是列表的长度必须一致

a=[1,2,3,4]
b=[17,12,11,10]
c=[-1,-2,-3,-4]
print(list(map(lambda x,y:x+y,a,b)))#[18, 14, 14, 14]
print(list(map(lambda x,y,z:x+y+z,a,b,c)))#[17, 12, 11, 10]
print(list(map(lambda x,y,z : 2.5*x + 2*y - z, a,b,c)))#[37.5, 31.0, 32.5, 34.0]

Filtering 函数

filter(function, sequence)

filter和map的函数一致,但是filter的功能是过滤掉sequence的列表中不符合function的对象

fibonacci = [0,1,1,2,3,5,8,13,21,34,55]
odd_number=list(filter(lambda x:x%2,fibonacci))
print(odd_number)#[1, 1, 3, 5, 13, 21, 55]
even_numbers = list(filter(lambda x: x % 2 == 0, fibonacci))
print(even_numbers)#[0, 2, 8, 34]

练习

下面的是一个常规的书店的购物车列表

订单号书名和作者数量单价
34587C++ Primer,Stanley B. Lippman285.8
2323Visual C++ 入门,明日科技488.8
2321python 学习,岳恩5585

1.写一个程序,倘若该订单的单价乘以总价没有大于100元的话就加上10元的运费

答案

orders = [ ["34587","C++ Primer,Stanley B. Lippman", 2, 40.95], 
	   ["2323","PVisual C++ 入门,明日科技", 4, 88.80], 
		   ["2321","python 学习,岳恩",55,85]]

min_order = 100


invoice_totals=list(map(lambda x:x if x[1]>=min_order else (x[0],x[1]+10), map(lambda x:(x[0],x[2]*x[3]),orders)))
print(invoice_totals)

© 著作权归作者所有

上一篇: docker 初级教程
下一篇: 我的vim配置
罗布V
粉丝 13
博文 60
码字总数 47114
作品 0
温州
程序员
私信 提问
python 函数式编程之匿名函数

python学习笔记,特做记录,分享给大家,希望对大家有所帮助。 匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。 在Python中,对匿名函数提供了有限...

展菲
06/28
0
0
Python函数——闭包延迟绑定

前言 请看下面代码 为什么输出结果为[6, 6, 6, 6],这段代码相当于 解答 运行代码,解释器碰到了一个列表解析,循环取multipliers()函数中的值,而multipliers()函数返回的是一个列表对象,这...

我爱学python
06/21
0
0
Python中lambda的用法及其与def的区别解析

一、python中的lambda 1 作用: 通常是用来在python中创建匿名函数的 2 格式: lambda 参数[,参数] : 表达式 3 注意: (1)lambda定义的是单行函数, 如果需要复杂的函数,应该定义普通函数...

雪之丞
2014/10/21
175
0
内置函数sorted的10个小tips

用于对集合进行排序(这里说的集合是对可迭代对象的一个统称,他们可以是列表、字典、set、甚至是字符串),它的功能非常强大,本文将深入浅出地介绍 sorted 的各种使用场景。 1、默认排序 ...

刘志军
2018/11/27
0
0
Python Lambda 表达式

http://www.tonglei.win/post/python/python-lambda-%E8%A1%A8%E8%BE%BE%E5%BC%8F/ Python 中 Lambda 表达式用于创建匿名函数 Lambda 表达式的作用是精简代码,但是不要为了精简而精简 用 la...

tonglei0429
07/01
13
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
5
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
6
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部