Python中的lambda函数和匿名函数使用指南
Python中的Lambda函数是一种迷你的匿名函数。与普通函数不同,Lambda函数不需要通过def语句来定义和命名,而是通过lambda来表示,并且仅由单个表达式组成。Lambda函数通常用于需要一个无需命名的小型函数的场合,通常作为参数传递给高级函数。
Lambda函数的语法非常简单:lambda [参数1, 参数2, …]: 表达式。
通过这个语法,我们可以在Python中定义非常短的函数,即不需要使用def或者其他语句的函数。我们可以将lambda函数存储在变量中,并且可以通过该变量调用该函数。
Lambda函数常用于一些需要函数作为参数的场合,比如filter和map这样的高级函数。
下面是使用filter和map函数时Lambda函数的示例:
示例1:使用filter函数和Lambda函数来过滤一个列表中的偶数:
lst = [1,2,3,4,5,6,7,8,9,10]
result = filter(lambda x: x % 2 == 0, lst)
print(list(result))
输出:[2, 4, 6, 8, 10]
在这个示例中,我们将一个lambda函数传递给filter函数,该函数将返回一个新的列表,其中只包含lst中的偶数。
示例2:使用map函数和Lambda函数将一个列表中的数字加倍:
lst = [1,2,3,4,5,6,7,8,9,10]
result = map(lambda x: x * 2, lst)
print(list(result))
输出:[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
在这个示例中,我们将一个lambda函数传递给map函数,该函数将返回一个新的列表,其中每个数字都被加倍。
除了在高级函数中作为参数传递,Lambda函数还可以在需要一个小型函数的地方使用。例如,在sorted函数中,我们可以使用Lambda函数来指定我们要使用哪个键进行排序。
示例3:使用Lambda函数在一个字典列表中按键排序:
items = [{'name': 'apple', 'price': 0.5}, {'name': 'banana', 'price': 0.2}, {'name': 'cherry', 'price': 1.3}]
result = sorted(items, key=lambda x: x['name'])
print(result)
输出:[{'name': 'apple', 'price': 0.5}, {'name': 'banana', 'price': 0.2}, {'name': 'cherry', 'price': 1.3}]
在这个示例中,我们将一个lambda函数传递给sorted函数,该函数指定我们将对名称进行排序。
Lambda函数虽然使用灵活方便,但是当Lambda函数变得非常长和复杂时,我们通常 还是使用def语句来定义一个真正的函数。因此,Lambda函数通常用于那些仅需要1-2行代码来实现的功能,而对于那些更复杂的功能,我们通常编写“真正”的函数。
