admin 管理员组

文章数量: 887021


2024年2月25日发(作者:linux命令提示)

python lambda用法

Python的lambda函数可以简单地定义一个内联函数,并可以用在任何需要函数对象的地方。在Python中,lambda定义的函数可以接受任意数量的参数,但必须在一行中返回一个表达式的计算结果。它可以被用作匿名函数,当你想定义一个函数,但不想通过def关键字定义它时,lambda函数是一个很好的选择。

Python lambda函数的语法如下:

lambda arguments: expression

它们接受参数,并在一行中返回表达式的结果。lambda函数可以替代普通函数,使代码更简单。

lambda函数的语法简洁,但它不完全是函数的替代品,它的优点在于它的表达式更简短,可以用在任何可以计算的地方,使我们可以更快地构建程序。它比Python函数更简单,更加易读,却有着同样的功能。

lambda函数可以用于函数式编程(functional programming)中,例如高阶函数,map,filter,reduce等等。

下面我们就介绍一些典型的应用场景:

(1)高阶函数:

高阶函数是接收函数作为参数的函数,我们可以使用lambda函数来定义这些参数,从而更加方便地使用。

下面的代码中,我们定义了一个名为high()的函数,这个函数会把传入的参数f作为一个函数,调用它,并返回结果:

- 1 -

```

def high(f):

return f(2)

```

我们可以用lambda来代替函数参数f,从而使代码更简洁:

```

def high(f):

return f(2)

print(high(lambda x: x * x))

```

(2)map函数

map函数可以把一个函数调用应用在一个可迭代的对象(如list)上,我们可以使用lambda函数来让map函数更简洁易读:

下面的代码中,我们使用一个名为double()的函数来把list中的每个元素都乘以2:

```

def double(x):

return x * 2

nums = [1, 2, 3]

new_nums = list(map(double, nums))

print(new_nums)

```

- 2 -

这里可以使用lambda函数来把double函数替换掉:

```

nums = [1, 2, 3]

new_nums = list(map(lambda x: x * 2, nums))

print(new_nums)

```

(3)filter函数

filter函数可以从一个list中过滤掉一些元素,只返回满足条件的元素。下面的代码中,我们使用一个名为is_even()函数来返回list中所有偶数:

```

def is_even(x):

return x % 2 == 0

nums = [1, 2, 3, 4, 5]

even_nums = list(filter(is_even, nums))

print(even_nums)

```

可以用lambda函数来代替is_even()函数:

```

nums = [1, 2, 3, 4, 5]

even_nums = list(filter(lambda x: x % 2 == 0, nums))

print(even_nums)

- 3 -

```

(4)reduce函数

reduce函数接收一个函数,一个list,并通过函数把list中元素聚合在一起,然后返回一个最终值。下面的例子中,我们使用一个名为sum()函数来把list中的所有元素加起来:

```

def sum(x, y):

return x + y

nums = [1, 2, 3, 4]

total = reduce(sum, nums)

print(total)

```

可以用lambda函数来代替sum()函数:

```

nums = [1, 2, 3, 4]

total = reduce(lambda x, y: x + y, nums)

print(total)

```

总结

Python的lambda函数可以简单地定义一个内联函数,可以用在任何需要函数对象的地方,而且可以替代普通函数,使代码更简洁易读。它可以用来写函数式编程,例如高阶函数,map,filter,reduce - 4 -

等等,能够帮助我们更加便捷地构建程序。lambda函数的语法简洁,可以让程序更易读,更加精简,是Python程序设计中极有用的工具之一。

- 5 -


本文标签: 函数 定义 返回 元素 参数