概述
简介:lambda的使用是为了简化代码,当函数只有一行代码时可以使用lambda表达式来表示
lambda表达式也叫匿名函数
lambda语法:lambda 参数列表:表达式, 参数是可以有也可以没有的,但只有一个返回值
lambda的返回值是一个地址,要取到返回的值,需要像调用函数一样使用
fn2 = lambda: 100
print(fn2) # 输出的是lambda的内存地址
# 使用lambda表达式,需要像调用函数那样fn2()
lambda参数类型:1)默认参数
2)可变参数(args):传入不定长参数,返回元组
3)可变参数(kwargs):传入指定参数,返回字典
# 默认参数
fn3 = lambda a, b, c = 100: a + b + c
print(fn3(10, 20))
# 可变参数
fn4 = lambda *args: args
print(fn4(10, 20, 30)) # 传入一个不定长的参数,返回一个元组
# 可变参数
fn5 = lambda **kwargs: kwargs
print(fn5(python='简单', name='tom')) # 传入指定的参数,返回字典
# lambda应用
fn6 = lambda a, b: a if a > b else b # 谁大返回谁
print(fn6(1000, 200))
排序:使用列表中sort函数对字典进行排序,在使用时用到lambda表达式,及key关键字
students = [{'name': 'tom', 'age': 20, 'sex': 'nan'},
{'name': 'amary', 'age': 30, 'sex': 'nv'},
{'name': 'haha', 'age': 25, 'sex': 'nv'}]
print(students)
# 使用sort进行排序
# name对应的value值进行升序排序
students.sort(key=lambda x: x['name']) # 使用key值进行调用
print(students)
# name对应的value值进行降序排序
students.sort(key=lambda x: x['name'], reverse=True)
print(students)
# age对应的value值进行升序排序
students.sort(key=lambda x: x['age'])
print(students)
高阶函数:把函数作为参数进行传递,是一种函数式编程的体现,函数式编程指高度抽象的编程范式
两个函数:1)abs() 函数:求绝对值
2)round() 函数:对数据进行四舍五入
内置高阶函数:1)map() 函数:map(func,list) 将传入的函数func作用到序列list中的每一个元素,并将结果组成新的列表(python2)/迭代器(python3)返回
2)reduce() 函数:reduce(func,list) 传入的函数func必须有两个参数,该函数计算序列list中所有的元素和,注意:需要使用import导出模块,import functools
3)filter() 函数:filter(func,list) 过滤序列,把不符合func函数条件的数据过滤掉,并且返回的是一个地址,需要list()转换为列表
# map() 函数
# map(func, list) 将传入的函数变量func作用到list变量中的每个元素,并将结果组成新的列表(python2)/迭代器(python3)返回
list1 = [1, 2, 3, 4]
def func1(x):
return x**2
result = map(func1, list1) # 返回的是一个列表
print(result) # 返回了一个内存地址
print(list(result)) # 拿到地址中的数据
# reduce() 函数
# reduce(func, list) 其中func必须有两个参数,每次func计算的结果继续和序列的下一个元素累积计算
# 需要 导出模块 import functools
import functools # 导出模块语句
list2 = [1, 2, 3, 4]
def func2(a, b):
return a + b
result = functools.reduce(func2, list2) # 返回的序列元素和 前一个结果和下一个相加
print(result)
# filter() 函数
# filter(func,list) 用于过滤序列,过滤掉不符合条件的数据,返回一个filter对象,即是一个地址,需要使用list()转换为列表
list3 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def func3(a):
return a % 2 == 0
result = filter(func3, list3) # 返回的是一个地址
print(result)
print(list(result))
最后
以上就是幽默夏天为你收集整理的python lambda的使用/列表内字典的排序/高阶函数的全部内容,希望文章能够帮你解决python lambda的使用/列表内字典的排序/高阶函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复