Python入门8:lambda表达式(列表数据+字典数据排序)

一、什么是lambda表达式

        函数是⼀个被命名的、独⽴的完成特定功能的⼀段代码,并可能给调⽤它的程序⼀个返回
值。在python中函数有两种类型,一种是有名函数一种事匿名函数,之前我们已经对有名函数油了一个深入的了解,知道了有名函数就是普通函数,那么匿名函数是其实就是我们的lambda表达式。

二、复习lambda表达式

2.1、lambda表达式的应用场景

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

2.2、lambda表达式的语法

基本语法:

# 变量 = lambda 函数参数:表达式((函数代码 + return返回值))
# 调用变量
# 变量()

2.3、lambda表达式的相关应用

2.2.1、无参的lambda表达式

定义一个lambda表达式用来向别人打招呼:

代码:

# 普通函数:
def say_hello():
    return "hello"
print("我是普通函数输出的:",say_hello())

# lambda表达式:
lambda_say_hello = lambda: "hello"
print(lambda_say_hello())
# 返回lambda_say_hello()在内存中的地址
print("我是lambda表达式输出的:",lambda_say_hello)

 运行结果:

 

2.2.2、有默认参数的lambda表达式

定义四个lambda表达式用来进行计算两数的四则运算:

代码:

# 定义一个lambda表达式用来返回四则运算的结果:
# 加:
he = lambda num1,num2 = 100:num1 + num2
print("加法的结果为:",he(10))
# 减:
jian = lambda num1,num2,num3 = 100:num3 - num2 - num1
print("减法的结果为:",jian(30,70,))
# 乘:
cheng = lambda num1,num2,num3 = 3: num1 * num2 * num3
print("乘法的结果为:",cheng(1,5,9)) # 如果给默认值参数赋值,那么默认值将会被覆盖
# 除:
chu = lambda num1,num2,num3 = 2: num1 / num2 / num3
print("除法的结果为:",chu(100,5))

运行结果:

 

2.2.3、可变参数*args的lambda表达式

定义一个可变参数*args(元组类型)的lambda表达式计算返回元组的最后一个元素:

代码:

last_num = lambda *nums: nums[-1]
print("最后一个元素是:",last_num(1,1,465,49865,456,456,456,5465,6,56))

运行结果: 

2.2.4、带关键字的可变参数**kwargs的lambda表达式

定义一个可变关键字参数*kwargs(元组类型)的lambda表达式返回字典里面的所有的值:

代码:

my_dict = lambda **dict: dict.items()
print(my_dict(name = "Tom",age = 23,sex ="man"))

 运行结果:

2.2.5、带三元运算的的lambda表达式

1、什么是三元运算符:

三元运算符的语法:
语句1 if 判断条件 else 语句2

2、三元运算符案例:返回两数字的最大值:

代码:

num1 = int(input("请输入比较的第一个数字:"))
num2 = int(input("请输入比较的第二个数字:"))
max = num1 if num1 > num2 else num2
print("最大值为:",max)

运行结果:

3、带三元运算的的lambda表达式案例:返回两数字的最大值:

代码:

max = lambda num1,num2: num1 if num1 < num2 else num2
print("使用lambda表达式和三元运算符计算最大值的结果为:",max(12,324))

运行结果:

三、lambda表达式(列表数据+字典数据排序)的案例

3.1、列表元素为字典的情况

3.1 1、按照字典中的某个键对应的值进行排序

3.1.2.、按照多个键对应的值依次排序

案例:

student = [
    {"name":"peter","age":20},
    {"name":"tom","age":22},
    {"name":"tnny","age":21}
]
# sort():排序后改变的是原来的列表,sorted():排序后创建了一个新的列表
# 1、使用sort()函数排序:
student.sort(key = lambda x: x["name"])
print("根据名字进行升序排序:",student)
student.sort(key = lambda x: x["age"], reverse = True)
print("根据年龄进行降序排序:",student)
# 按照多个键对应的值依次排序(先比较名字,名字如果首字母相同再比较年龄)
student.sort(key=lambda x:(x["name"],x["age"]))
print("按照多个键对应的值依次排序",student)
print("-"*120)
# 2、使用sorted()函数排序:
sorted_stu = sorted(student,key=lambda x:x["name"])
print("根据名字进行升序排序:",sorted_stu)
sorted_stu1 = sorted(student,key=lambda x:x["age"])
print("根据名字进行升序排序:",sorted_stu1)
sorted_stu2 = sorted(student,key = lambda x:(x["age"],x["name"]),reverse = True)
print("按照多个键进行降序排序:",sorted_stu2)

 

3.2、列表和字典混合情况

3.2.1、按照字典中列表元素的某个特征进行排序

3.2.2、按照列表长度等其他条件排序

my_data = {
    'group1': [10, 5],
    'group2': [3, 7, 2,23],
    'group3': [12, 1, 9]
}
# 按照字典中列表元素的某个特征进行排序
sorted_data = sorted(my_data.items(), key=lambda item: item[-1], reverse=True)
print("根据group的序号降序排序:",sorted_data)
# 按照列表长度等其他条件排序
sorted_data1 = sorted(my_data.values(), key=lambda x: len(x), reverse=True)
print("根据列表的长度排序:",sorted_data1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值