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中的多线程实例教程
Aug 27 Python
python中的随机函数random的用法示例
Jan 27 Python
简单谈谈Python的pycurl模块
Apr 07 Python
Python网络爬虫之爬取微博热搜
Apr 18 Python
Django时区详解
Jul 24 Python
Numpy数组array和矩阵matrix转换方法
Aug 05 Python
keras获得某一层或者某层权重的输出实例
Jan 24 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
Feb 28 Python
Python数据结构dict常用操作代码实例
Mar 12 Python
python中for in的用法详解
Apr 17 Python
教你怎么用Python实现多路径迷宫
Apr 29 Python
Django数据库(SQlite)基本入门使用教程
Jul 07 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图片上传存储源码并且可以预览
2011/08/26 PHP
PHP中设置时区,记录日志文件的实现代码
2013/01/07 PHP
smarty基础之拼接字符串的详解
2013/06/18 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
laravel 5 实现模板主题功能(续)
2015/03/02 PHP
PHP 断点续传实例详解
2017/11/11 PHP
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
2013/01/27 Javascript
js模仿jquery的写法示例代码
2013/06/16 Javascript
javascript生成随机大小写字母的方法
2014/02/20 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
jquery中获取元素里某一特定子元素的代码
2014/12/02 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
2014/12/20 Javascript
Bootstrap中CSS的使用方法
2016/02/17 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
浅析jquery unbind()方法移除元素绑定的事件
2016/05/24 Javascript
js制作网站首页图片轮播特效代码
2016/08/30 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
JS实现探测网站链接的方法【测试可用】
2016/11/08 Javascript
JS敏感词过滤代码
2016/12/23 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
Vue通过配置WebSocket并实现群聊功能
2019/12/31 Javascript
[01:29:46]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第二局
2016/02/27 DOTA
python类的方法属性与方法属性的动态绑定代码详解
2017/12/27 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
ktv中秋节活动方案
2014/01/30 职场文书
网络工程师自荐书范文
2014/04/01 职场文书
冬季作息时间调整通知
2015/04/24 职场文书
保险公司岗前培训工作总结
2015/10/24 职场文书