匿名函数
Posted zzkhome
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了匿名函数相关的知识,希望对你有一定的参考价值。
匿名函数 关键字:lambda,是对函数的简写
# 一个简单的例子,2个数字相加
s = lambda a, b: a + b
print(s(2, 3))
# 如果用函数
def func(a,b):
c=a+b
return c
print(func(2,3))
5
5
匿名函数可以作为参数出现
dict = [{"a": 120, "b": 134}, {"a": 140, "b": 134}, {"a": 150, "b": 134}]
# max() max(iterable, *[, default=obj, key=func]) -> value
#查看参数,可迭代对象是必须要传的,可以看到key可以等于一个函数,
m = max(dict, key=lambda x: x["a"]) # key的作用
print(m) # 可以去到自己定义的最大值
# 其他内置函数基本也可以使用匿名函数来定义属于自己的规则
{‘a‘: 150, ‘b‘: 134}
map函数与匿名函数
list1 = [2, 3, 5, 76, 8]
# map 函数 匿名函数 可迭代对象
result = map(lambda x: x if x % 2 == 0 else x + 100, list1) # map函数配合匿名可实现自定义的筛选和操作
print(result) # 会返回一个地址
print(list(result)) # 以列表形似打印
<map object at 0x000001BB18856A08>
[2, 103, 105, 76, 8]
reduce函数匿名函数
# reduce() 函数会对参数序列中元素进行累积。它会传进来的第一个元素和第二个函数进行操作,其结果在和第三个元素操作
# reduce函数 对可迭代对象元素进行加减乘除
from functools import reduce
# reduce(function, iterable[, initializer])
# function -- 函数,有两个参数 iterable -- 可迭代对象 initializer -- 可选,初始参数
tuples = (2, 3, 4, 5, 6, 6, 7, 54)
a = reduce(lambda x, y: x + y, tuples) # 初始值默认是第一个元素,在最后一个地方
b = reduce(lambda x, y: x + y, tuples,1000) # 如果有初始值,就将其作为第一个元素来计算
print(a)
print(b)
87
1087
filter函数和匿名函数
list1 = [2, 3, 5, 76, 8]
# filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
# filter函数 返回符合条件的过滤结果 过滤器
result1 = filter(lambda x: x > 10, list1)
print(list(result1))
[76]
sorted 高级和匿名函数
students = [{"a": 120, "b": 84}, {"a": 140, "b": 34}, {"a": 150, "b": 14}]
# 查看参数 sorted(iterable, /, *, key=None, reverse=False) 它也有key,跟第一个用法差不多
a=sorted(students,key=lambda x:x["b"],reverse=True) # 自己定义排序规则
print(a)
[{‘a‘: 120, ‘b‘: 84}, {‘a‘: 140, ‘b‘: 34}, {‘a‘: 150, ‘b‘: 14}]
注意:key后面也可以接上定义好的函数
# 比如我们需要计算总分
def func(dic):
return dic["a"]+dic["b"] # 这其实用匿名函数写也挺容易的,当遇到难的,可以自行定义
students = [{"a": 120, "b": 84}, {"a": 140, "b": 34}, {"a": 150, "b": 14}]
# 查看参数 sorted(iterable, /, *, key=None, reverse=False) 它也有key,跟第一个用法差不多
a=sorted(students,key=func,reverse=True) # 自己定义排序规则
print(a)
[{‘a‘: 120, ‘b‘: 84}, {‘a‘: 140, ‘b‘: 34}, {‘a‘: 150, ‘b‘: 14}]
以上是关于匿名函数的主要内容,如果未能解决你的问题,请参考以下文章