python 匿名函数与三元运算学习笔记


Posted in Python onOctober 23, 2020

匿名函数

匿名函数就是不需要显示式的指定函数名

首先看一行代码:

def calc(x,y):
    return x*y
print(calc(2,3))
 
# 换成匿名函数
 
calc = lambda x,y:x*y
print(calc(2,3))

你也许会说,用上这个东西没感觉有毛方便呀, 。。。。呵呵,如果是这么用,确实没毛线改进,不过匿名函数主要是和其它函数搭配使用的呢,如下

res = map(lambda x:x**2,[1,2,3,4,5])
print(list(res))
# 结果:
# [1, 4, 9, 16, 25]
for i in res:
    print(i)
# 结果:
# 1
# 4
# 9
# 16
# 25

匿名函数的作用:

1,节省代码

2,看着高级

lambda表达式

lambda原型为:lambda参数:操作(参数)

lambda函数也叫匿名函数,即没有具体名称的函数,他允许快速定义单行函数,可以用在任何需要函数的地方。这区别于def定义的函数。

lambda和def的区别:

  • def 创建的方法是有名称的,而lambda没有
  • lambda会返回一个函数对象,但这个对象不会赋值给一个标识符,而def则会把函数对象赋值给一个变量
  • lambda只是一个表达式,而def则是一个语句
  • lambda表示式“:” 后面,只能有一个表达式,def则可以有多个。
  • 像 if 或者 for 或者 print 等语句不能用于lambda中,def可以
  • lambda一般用来定义简单的函数,而def可以定义复杂的函数
>>> def add(x,y):           #定义一个加法函数
    return x+y              #返回两个参数的相加的值
 
>>> z=f(3,4)               
>>> print(z)
7                                     #调用加法函数返回7
>>> lambda x,y:x+y
<function <lambda> at 0x0000020F385B86A8>   
#可以看到lambda是一个   function(函数)类对象
>>> f=lambda x,y:x+y          #功能实现的跟add(x,y)一样       
>>> f(1,2)
3
>>> f(3,4)
7
>>> def multiply(x,y):
    return x*y
 
>>> multiply(3,4)
12
>>> multiply=lambda x,y:x*y
>>> multiply(3,4)
12
>>> def subtract(x,y):
    return x-y
 
>>> subtract(3,4)
-1
>>> subtract=lambda x,y:x-y
>>> subtract(3,4)
-1
 
>>> def divide(x,y):
    return x/y
 
>>> divide(4,2)
2.0
>>> divide=lambda x,y:x/y
>>> divide(4,2)
2.0
 
#上面的乘法函数,减法函数,除法函数都可以用lambda表达式来代替,更方便

lambda 的应用

# 2.lambda 的应用
# ---CASE 1
fs = map(lambda i:(lambda j: i*j), range(6))
print([f(2) for f in fs])
 
#---CASE 2
fs = [lambda j:i*j for i in range(6)]
print([f(2) for f in fs])
 
#---CASE 3
fs = []
for i in range(6):
    fs.append(lambda j:i*j)
    if i==3:
        break
print([f(2) for f in fs])
 
#---CASE 4
fs = [(lambda i:lambda j:i*j)(i) for i in range(6)]
print([f(2) for f in fs])
 
# 结果:
# [0, 2, 4, 6, 8, 10]
# [10, 10, 10, 10, 10, 10]
# [6, 6, 6, 6]
# [0, 2, 4, 6, 8, 10]

map()函数

下面我们看map()函数,它可以将一个函数映射到一个可枚举类型上面。沿用上面给出的a和f,可以写:

map(f , a)

也就是将函数 f 依次套在 a 的每一个元素上面,获得结果 。如果用lambda表达式来替换f,就变成了:

map( lambda x : x + 1, [1, 2, 3] )

是不是就一目了然。

Apply() 函数

Python中apply函数的格式为: apply(func , *args , **kwargs)

当然,func可以是匿名函数。

用途:当一个函数的参数存在于一个元组或者一个字典中时,用来间接的调用这个函数,并将元素或者字典的参数按照顺序传递给参数。

解析:args是一个包含按照函数所需参数传递的位置参数的一个元组。简单来说,假如A函数的函数位置为A(a =1 , b =2),那么这个元组中就必须严格按照这个参数的位置顺序进行传递(a=3,b=4),而不能是(b=4,a=3)这样的顺序。kwargs是一个包含关键字参数的字典,而其中args如果不传递,kwargs需要传递,则必须在args的位置留空。

apply的返回值就是函数func函数的返回值。

def function(a,b): 
     print(a,b) 
 apply(function,('good','better')) 
 apply(function,(2,3+6)) 
 apply(function,('cai','quan')) 
 apply(function,('cai',),{'b':'caiquan'}) 
 apply(function,(),{'a':'caiquan','b':'Tom'}) 

输出结果:

('good', 'better')
(2, 9)
('cai', 'quan')
('cai', 'caiquan')
('caiquan', 'Tom')

三元运算

三元运算又称三目运算,是对简单的条件语句的简写。

举个例子:简单条件语句      ————>     三元运算

if 条件成立:
    val = 1
else:
    val = 2
val = 1 if 条件成立 else 2

python中的三元运算符不像其他语言,其他的一般都是

判定条件?为真时的结果:为假时的结果

result = 5 >3?1:0

而在python中的格式为:

为真时候的结果 if 判定条件  else 为假时的结果<br>result =x if condition else y

如:

1 if 5>0 else 0
def func(x,y):
  '''定义一个函数,如果x大于y,返回x-y,否则,返回y-x'''
  return x-y if x>y else y-x

r1 = func(10,18)
r2 = func(18,12)
print(r1)
print(r2)

结果:
8
6

以上就是python 匿名函数与三元运算学习笔记的详细内容,更多关于python 匿名函数与三元运算的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python中MYSQLdb出现乱码的解决方法
Oct 11 Python
python文件的md5加密方法
Apr 06 Python
Java编程迭代地删除文件夹及其下的所有文件实例
Feb 10 Python
Python读取properties配置文件操作示例
Mar 29 Python
python url 参数修改方法
Dec 26 Python
python爬虫获取小区经纬度以及结构化地址
Dec 30 Python
selenium+python自动化测试之页面元素定位
Jan 23 Python
python selenium循环登陆网站的实现
Nov 04 Python
Pytorch DataLoader 变长数据处理方式
Jan 08 Python
基于python-pptx库中文文档及使用详解
Feb 14 Python
Prometheus开发中间件Exporter过程详解
Nov 30 Python
详解分布式系统中如何用python实现Paxos
May 18 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
Oct 23 #Python
Python+OpenCV图像处理——实现直线检测
Oct 23 #Python
使用Python Tkinter实现剪刀石头布小游戏功能
Oct 23 #Python
Python 列表推导式需要注意的地方
Oct 23 #Python
python中的split、rsplit、splitlines用法说明
Oct 23 #Python
Python学习工具jupyter notebook安装及用法解析
Oct 23 #Python
浅析关于Keras的安装(pycharm)和初步理解
Oct 23 #Python
You might like
PHP 文件上传全攻略
2010/04/28 PHP
PHP中文件缓存转内存缓存的方法
2011/12/06 PHP
PHP 自定义错误处理函数trigger_error()
2013/03/26 PHP
destoon之一键登录设置
2014/06/21 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
js调用flash的效果代码
2008/04/26 Javascript
jQuery autocomplete插件修改
2009/04/17 Javascript
js常用代码段整理
2011/11/30 Javascript
js数组方法扩展实现数组统计函数
2014/04/09 Javascript
JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)
2014/10/17 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
JS烟花背景效果实现方法
2015/03/03 Javascript
JS制作简单的三级联动
2015/03/18 Javascript
解决js函数闭包内存泄露问题的办法
2016/01/25 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
2016/09/14 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
2016/10/28 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
2018/04/25 Javascript
react中实现搜索结果中关键词高亮显示
2018/07/31 Javascript
webpack 代码分离优化快速指北
2019/05/18 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
2020/06/25 Javascript
vue 动态添加class,三个以上的条件做判断方式
2020/11/02 Javascript
Python实现TCP协议下的端口映射功能的脚本程序示例
2016/06/14 Python
python用opencv批量截取图像指定区域的方法
2019/01/24 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
2020/03/30 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
2020/04/14 Python
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
澳大利亚家用电器在线商店:Billy Guyatts
2020/05/05 全球购物
入党自荐书范文
2014/03/09 职场文书
《这片土地是神圣的》教学反思
2016/02/16 职场文书
2016年企业安全生产月活动总结
2016/04/06 职场文书
pd.drop_duplicates删除重复行的方法实现
2022/06/16 Python