欢迎访问宙启技术站
智能推送

Python中的匿名函数使用指南

发布时间:2023-06-17 04:49:04

匿名函数在Python中非常常用,尤其是在高阶函数中,比如map,filter,reduce等函数中。匿名函数也叫做lambda函数,是一种没有def关键字定义的简单函数。

定义匿名函数的语法是:lambda 参数列表: 表达式,这里的参数列表和普通函数的参数列表是一样的,只是没有函数名而已,表达式则是函数的返回值,可以是任意合法的Python表达式。

下面来看几个常见的匿名函数应用示例。

1.使用在map中

map函数会将一个函数作用于一个序列中的每一个元素,并返回处理结果的一个列表。先来看一下使用普通函数的示例:

def square(x):
    return x**2

lst = [1, 2, 3, 4, 5]
squares = map(square, lst)
print(list(squares))  # [1, 4, 9, 16, 25]

使用匿名函数可以更简洁地写出上面的代码:

lst = [1, 2, 3, 4, 5]
squares = map(lambda x: x**2, lst)
print(list(squares))  # [1, 4, 9, 16, 25]

2.使用在filter中

filter函数会将一个函数作用于一个序列中的每一个元素,并根据函数返回的结果是否为True或False来过滤掉一些元素,并返回一个由剩下元素组成的一个列表。先来看一下使用普通函数的示例:

def even(x):
    return x % 2 == 0

lst = [1, 2, 3, 4, 5]
evens = filter(even, lst)
print(list(evens))  # [2, 4]

使用匿名函数可以更简洁地写出上面的代码:

lst = [1, 2, 3, 4, 5]
evens = filter(lambda x: x % 2 == 0, lst)
print(list(evens))  # [2, 4]

3.使用在sorted中

sorted函数会将一个序列中的元素进行排序并返回排序后的一个列表,它也可以接受一个函数作为第二个参数,用来定制排序规则。先来看一下使用普通函数的示例:

def get_name_length(name):
    return len(name)

lst = ['Tom', 'Jerry', 'Mike', 'Bob']
sorted_lst = sorted(lst, key=get_name_length)
print(sorted_lst)  # ['Tom', 'Bob', 'Mike', 'Jerry']

使用匿名函数可以更简洁地写出上面的代码:

lst = ['Tom', 'Jerry', 'Mike', 'Bob']
sorted_lst = sorted(lst, key=lambda x: len(x))
print(sorted_lst)  # ['Tom', 'Bob', 'Mike', 'Jerry']

总结

Python中匿名函数使用非常简单,语法也很简洁明了。在高阶函数的应用中,必须熟练掌握匿名函数的使用,才能更好地进行编程。