首页 > 其他分享 >lambda表达式(匿名函数)

lambda表达式(匿名函数)

时间:2022-10-02 00:22:43浏览次数:53  
标签:name fn1 匿名 参数 print 100 表达式 lambda

1、lambda的应用场景

  如果一个函数有一个返回值,并且只有一句代码,可以使用lambda简化。

2、lambda语法

  lambda 参数列表:表达式

  注意:lambda表达式参数可有可无,函数的参数在lambda表达式中完全适用。

     lambda函数能接收任何数量的参数但只能返回一个表达式的值。

3、体验

# 需求:函数 返回值100

# 1.函数
def fn1():
    return 100

# <function fn1 at 0x000001F62A913E20>
# print(fn1)
# 100
# print(fn1())

result = fn1()
# 100
print(result)

# 2. lambda  匿名函数
# lambda 参数列表:表达式
fn2 = lambda : 100
# lambda内存地址
print(fn2)
print(fn2())  # 100 返回值 调用函数

  注意:直接打印lambda表达式,输出的是此lambda的内存地址

4、计算a+b

# 需求:计算任意两个数字的累加和

# 1. 函数
def add(a,b):
    return a + b

result = add(1,3)
print(result)

# 2. lambda
fn1 = lambda a, b: a + b
print(fn1(3, 4))

 5、lambda的参数形式

  5.1 无参数

fn1 = lambda: 100
print(fn1())  # 100

  5.2 一个参数

 

# 一个参数
fn1 = lambda a: a
print(fn1('hello word'))  # hello word

 

  5.3 默认参数

# 默认参数
fn2 = lambda a, b, c= 100: a + b + c
# print(fn2(10, 30))  # 140
print(fn2(10, 20, 40))

  注意:默认参数如果不传值会使用默认的值,如果传数据了就会覆盖原有的默认值

  5.4 可变参数:*args(接受不定长的位置参数)

# 可变参数
fn3 = lambda *args: args
print(fn3(10, 30, 50))  # (10, 30, 50)

  注意:这里的可变参数传入到lambda之后,返回值为元组

  5.5 可变参数:**kwargs(接受不定长的关键字参数)

# 可变参数 **kwargs
fn4 = lambda **kwargs: kwargs
print(fn4(name='python'))  # {'name': 'python'}

  注意:这里的可变参数传入到lambda之后,返回值为字典

6、lambda的应用

  6.1 带判断的lambda

# lambda 两个数字比大小,谁大返回谁
fn1 = lambda a, b: a if a > b else b
print(fn1(1000, 500))  # 1000

  6.2 列表数据按字典key的值排序

 

# lambda 两个数字比大小,谁大返回谁
# fn1 = lambda a, b: a if a > b else b
# print(fn1(1000, 500))  # 1000

student = [
    {'name': 'lisi', 'age': 20},
    {'name': 'zhang', 'age': 30},
    {'name': 'hong', 'age': 40}
]
# sort(key=lambda..., reverse=布尔类型数据)
# 1. name key对应的值进行升序排序
student.sort(key=lambda x: x['name'])
print(student)

# 2. name key对应的值进行降序排序
student.sort(key=lambda x: x['name'], reverse=True)
print(student)
# 3. age key对应的值进行升序排序
student.sort(key=lambda x: x['age'])
print(student)

 

标签:name,fn1,匿名,参数,print,100,表达式,lambda
From: https://www.cnblogs.com/yz-b/p/16743477.html

相关文章

  • 模板变量替换(正则表达式)
    publicclassTemplateReplaceTest{publicstaticvoidmain(String[]args){Stringsql="INSERTINTO${tableName}"+"(${COLUMNS})......
  • 【正则】954- 正则表达式有几种字符匹配模式?
    最近再一次重温老姚大佬的《JavaScript正则表达式迷你书》,并将核心知识点整理一遍,方便复习。原书写得非常棒,建议看下原书啦。 地址:https://github.com/qdlaoyao/js-reg......
  • 正则表达式
    正则表达式符号描述?0个或1个,它就像是可选链操作符*0个或1个或多个+1个或多个......
  • 正则表达式中^的用法
    在使用正则表达式^的时候,有两层意思一限定开头放在规则的开头部分,表示限定开头/^a/表示以a开头 二(否)取反在中括号”[]”中被使用的话就是表示字符类的否定,在这个字......
  • 定时任务的cron表达式
    前言对于开发人员来说,在做项目的过程中或多或少都会用到定时任务,Java开发一般会用SpringQuartz、xxl-job、Elastic-job来做定时任务调度框架。不论使用哪种框架,定时任务......
  • Qt小技巧16.信号与lambda的一点小记
    1引言Qt中用信号连接到一个lambda表达式,可谓十分清爽,简单易懂,但是你觉得你真的就完全会用了?有些坑还是要去踩的。2看个例子这里定义一个QThread子类MyThread,在MainWin......
  • JS 正则表达式
    普通字符普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。字符描述[ABC]匹配 [...] 中......
  • JavaScript——正则表达式
    正则表达式                                                         ......
  • Oracle中的正则表达式(及函数)
    运算符在介绍函数前,这里先说明一下Oracle中正则表达式运算符及其描述。如果不知道他们有什么用,或者也不知道描述说的是什么,没关系,可以先看后面的介绍,就知道他们的含义了......
  • Lombda表达式
    LambdaLambda表达式就是简写了函数式接口(函数式接口有且只有一个抽象函数)测试代码按照原来的方式我们都是线实现接口,重写方法,再进行实例化调用//接口publicinterf......