Python lambda表达式 匿名函数

#1.lambda表达式/匿名函数
#应用场景 : 如果函数有一个返回值,并且只有一句代码,可以使用lambda简化
#语法 :
# lambda 参数列表 : 表达式
#注意:
# lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用
# lambda表达式能接收任何数量的参数,但是只能返回一个表达式的值

def fun1():
    return 2020

r1 = lambda : 2020  #这是上面函数的lambda表达式,是一个没有参数的lambda表达式
print(r1)   #输出 <function <lambda> at 0x0000019449F5A700>
print(r1()) #输出 2020
r2 = r1
print(r2)   #输出 <function <lambda> at 0x000002078ABEA700>
print(r2()) #输出 2020
print(fun1) #输出 <function fun1 at 0x00000227B08AA670>
print(fun1()) #输出 2020

def my_add(a, b):
    return a + b

lam_add = lambda a, b : a + b   #my_add函数的lambda表达式写法,带两个参数

print(lam_add(1, 2))

# 带默认参数的 lambda 表达式
lam_moren = lambda a, b, c = 20 : a + b + c
print(lam_moren(1, 2))    #输出 23
print(lam_moren(1, 2, 3)) #输出 6

# 带可变参数(位置参数)的 lambda 表达式
lam_args = lambda *args : args
print(lam_args(1, 2, 3)) #输出 (1, 2, 3)
print(lam_args(55))      #输出 (55,)

# 带可变参数(关键字参数)的 lambda 表达式
lam_kwargs = lambda **kwargs : kwargs
print(lam_kwargs(name = 'Jack', age = 30, id = '001', gender = 'Man'))
#输出 {'name': 'Jack', 'age': 30, 'id': '001', 'gender': 'Man'}

# 带判断的 lambda 表达式
lam_charge = lambda a, b : a if a > b else b
print(lam_charge(2, 3))  #输出 3
print(lam_charge(6, 3))  #输出 6

# 用 lambda 表达式 来给列表排序
# 用函数 sort()
'''
list.sort(cmp=None, key=None, reverse=False)
cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
'''
def sort_num(elem):
    return elem[1]

list1 = [(1, 2), (2, 3), (3, 1), (5, 4)]
list2 = [(1, 2), (2, 3), (3, 1), (5, 4)]
print(list1)  #输出 [(1, 2), (2, 3), (3, 1), (5, 4)]
list1.sort(key = sort_num)
print(list1)  #输出 [(3, 1), (1, 2), (2, 3), (5, 4)]
list2.sort(key = lambda x : x[1])
print(list2)  #输出 [(3, 1), (1, 2), (2, 3), (5, 4)]

member_list = [{'name':'Lucy', 'age':22},
               {'name':'Jack', 'age':28},
               {'name':'Bruce', 'age':26}]
print(member_list)
#输出 [{'name': 'Lucy', 'age': 22}, {'name': 'Jack', 'age': 28}, {'name': 'Bruce', 'age': 26}]
member_list.sort(key = lambda x : x['name'], reverse = False)
print(member_list)
#输出 [{'name': 'Bruce', 'age': 26}, {'name': 'Jack', 'age': 28}, {'name': 'Lucy', 'age': 22}]
member_list.sort(key = lambda x : x['age'], reverse = True)
print(member_list)
#输出 [{'name': 'Jack', 'age': 28}, {'name': 'Bruce', 'age': 26}, {'name': 'Lucy', 'age': 22}]
发布了80 篇原创文章 · 获赞 19 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qiukapi/article/details/104304499
今日推荐