当前位置:   article > 正文

python中lambda 表达式(无参数、一个参数、默认参数、可变参数(*args、**kwargs)、带判断的lambda、列表使用lambda)_python lambda 无参数

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

lambda语法:

lambda 参数列表 : 表达式
注意:
  • lambda表达式的参数可有可⽆,函数的参数在lambda表达式中完全适⽤。
  • lambda表达式能接收任何数量的参数但只能返回⼀个表达式的值。
示例代码:
  1. # 函数
  2. def fn1():
  3. return 200
  4. print(fn1) # 【打印的为地址】<function fn1 at 0x000001B2307F4E18>
  5. print(fn1()) # 200
  6. # lambda表达式
  7. fn2 = lambda: 100
  8. print(fn2) # 【打印的为地址】<function <lambda> at 0x000001B230B6E840>
  9. print(fn2()) # 100
注意:直接打印 lambda 表达式,输出的是此 lambda 的内存地址

1、示例:计算a + b

1.1 函数实现

  1. def add(a, b):
  2. return a + b
  3. result = add(1, 2)
  4. print(result)
思考:需求简单,是否代码多?

1.2 lambda实现

  1. fn1 = lambda a, b: a + b
  2. print(fn1(1, 2))

2、lambda的参数形式

2.1 ⽆参数

  1. fn1 = lambda: 100
  2. print(fn1())

2.2 ⼀个参数

  1. fn1 = lambda a: a
  2. print(fn1('hello world'))

2.3 默认参数

  1. fn1 = lambda a, b, c=100: a + b + c
  2. print(fn1(10, 20))

2.4 可变参数:*args

  1. fn1 = lambda *args: args
  2. print(fn1(10, 20, 30)) # 【输出结果为:(10,20,30)】
注意:这⾥的可变参数传⼊到 lambda 之后,返回值为元组。

2.5 可变参数:**kwargs

  1. fn1 = lambda **kwargs: kwargs
  2. print(fn1(name='python', age=20)) # 【输出结果为:{'name':'python','age':20}】

3、lambda的应⽤

3.1 带判断的lambda

示例代码:

  1. fn1 = lambda a, b: a if a > b else b
  2. print(fn1(1000, 500))

运行结果: 

3.2 对列表数据进行排序

示例代码:

  1. datas = [5, 6, 8, 2, 9, 3, 4]
  2. datas2 = [5, 6, 8, 2, 9, 3, 4]
  3. datas3 = [5, 6, 8, 2, 9, 3, 4]
  4. # print(datas)
  5. datas.sort(reverse=True)
  6. print(datas)
  7. datas2.sort(key=lambda x: x, reverse=True)
  8. print(datas2)
  9. ret = sorted(datas3, reverse=True)
  10. print(ret)

运行结果:

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

  1. students = [
  2. {'name': 'TOM', 'age': 20},
  3. {'name': 'ROSE', 'age': 19},
  4. {'name': 'Jack', 'age': 22}]
  5. # 按name值升序排列
  6. students.sort(key=lambda x: x['name']) # 【sort修改的是原列表的数据】
  7. print(students)
  8. # 按name值降序排列
  9. students.sort(key=lambda x: x['name'], reverse=True)
  10. print(students)
  11. # 按age值升序排列
  12. students.sort(key=lambda x: x['age'])
  13. print(students)

运行结果:

3.4 实现对两个字段进行排序

        使用lambda表达式可以很方便地实现对两个字段的排序。可以使用sorted()函数,并传递一个lambda表达式作为排序的key参数。

        假设有一个包含多个字典的列表,每个字典都有两个字段field1field2,我们可以使用lambda表达式对这个列表进行排序。

示例代码:

  1. data = [
  2. {'field1': 3, 'field2': 2},
  3. {'field1': 1, 'field2': 5},
  4. {'field1': 2, 'field2': 1},
  5. {'field1': 2, 'field2': 5},
  6. {'field1': 4, 'field2': 4}
  7. ]
  8. sorted_data = sorted(data, key=lambda x: (x['field1'], -x['field2']))
  9. for d in sorted_data:
  10. print(d)

运行结果:

在lambda表达式中,我们使用(x['field1'], x['field2'])作为排序的key。这样可以先按field1进行排序,如果field1相同,则按field2进行逆序排序。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/356194
推荐阅读
相关标签
  

闽ICP备14008679号