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字符串和文件操作常用函数分析
Apr 08 Python
解决matplotlib库show()方法不显示图片的问题
May 24 Python
python调用OpenCV实现人脸识别功能
May 25 Python
python并发和异步编程实例
Nov 15 Python
python中时间、日期、时间戳的转换的实现方法
Jul 06 Python
Django上线部署之IIS的配置方法
Aug 22 Python
Python paramiko模块使用解析(实现ssh)
Aug 30 Python
python实现网站微信登录的示例代码
Sep 18 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
Jul 03 Python
python opencv pytesseract 验证码识别的实现
Aug 28 Python
pycharm 实现复制一行的快捷键
Jan 15 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
Feb 22 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连接mssql的一些相关经验及注意事项
2013/02/05 PHP
PHP反射使用实例和PHP反射API的中文说明
2014/07/02 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
2015/08/18 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
javascript 复杂的嵌套环境中输出单引号和双引号
2009/05/26 Javascript
基于PHP+Jquery制作的可编辑的表格的代码
2011/04/10 Javascript
Javascript自定义函数判断网站访问类型是PC还是移动终端
2014/01/10 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
js实现跨域访问的三种方法
2015/12/09 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
2016/04/23 Javascript
javascript表单正则应用
2017/02/04 Javascript
利用forever和pm2部署node.js项目过程
2017/05/10 Javascript
基于Vue自定义指令实现按钮级权限控制思路详解
2018/05/23 Javascript
js实现淘宝首页的banner栏效果
2019/11/26 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
[45:16]完美世界DOTA2联赛循环赛 IO vs FTD BO2第二场 11.05
2020/11/06 DOTA
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
python中argparse模块用法实例详解
2015/06/03 Python
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
强悍的Python读取大文件的解决方案
2019/02/16 Python
windows下python安装pip方法详解
2020/02/10 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
松本清官方海外旗舰店:日本最大的药妆连锁店
2017/11/21 全球购物
一些Solaris面试题
2015/12/22 面试题
群众路线党课主持词
2014/04/01 职场文书
理想点亮人生演讲稿
2014/05/21 职场文书
导游词欢迎词
2015/02/02 职场文书
项目建议书
2015/02/04 职场文书
会议主持人开场白台词
2015/05/28 职场文书
毕业赠语大全
2015/06/23 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
九大龙王魂骨,山龙王留下躯干骨,榜首死的最憋屈(被捏碎)
2022/03/18 国漫