匿名函数

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}]


以上是关于匿名函数的主要内容,如果未能解决你的问题,请参考以下文章

repost对JAVASCRIPT匿名函数的理解(透彻版)

如何启动匿名线程类

匿名函数

匿名函数的用法

使用匿名函数瓶颈提高 matlab 代码的性能

函数式编程——匿名函数