Python中的lambda(), filter(), map(), reduce()函数用法

版权声明:本文为博主原创文章,请尊重原创,转载请注明原文地址和作者信息! https://blog.csdn.net/zzc15806/article/details/81295707

1. lambda()

lambda()的主体是一个表达式,起到一个函数速写的作用。

语法:lambda [arg1[, arg2, ... argN]]: expression

例如:实现1+2

>>> fun = lambda x,y:x+y
>>> fun(1,2)
3
>>> (lambda x,y:x+y)(1,2)
3

lambda()也可以用在def函数中,

>>> def add(x):
        return lambda y:x+y
>>> a = add(1)
>>> a(2)
3

2. filter()

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

语法:filter(function, iterable)

例如:实现过滤出列表中所有奇数

>>> def is_odd(n):
>>>     return n % 2 == 1

>>> result = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) #python3中返回一个迭代器
>>> list(result)
[1, 3, 5, 7, 9]

3. map

map() 会根据提供的函数对指定序列做映射。第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

语法:map(function, iterable, ...)

例如:实现计算一个列表中各个元素的平方

>>> def suqare(x):
>>>     return x ** 2

>>> result = map(square, [1,2,3,4]) #python3中返回一个迭代器
>>> list(result)
[1, 4, 9, 16]

4. reduce

reduce() 函数对参数序列中元素进行累积。使用function先对集合中的前两个元素进行操作,得到的结果再与第三个元素进行function运算,如此迭代,得到最后的结果。

语法:reduce(function, iterable[, initializer])

例如:实现1+2+3+4

>>> from functools import reduce
>>> def add(x, y):
>>>     return x + y
>>> reduce(add, [1,2,3,4]) #1+2+3+4
10

此时默认初始值为0,如果初始值为10,则,

>>> from functools import reduce
>>> def add(x, y):
>>>     return x + y
>>> reduce(add, [1,2,3,4], 10) #1+2+3+4+10
20

猜你喜欢

转载自blog.csdn.net/zzc15806/article/details/81295707