Python lambda map filter reduce

lambda可以理解为一个小的匿名函数,lambda函数可以使用任意数量的参数,但只能有一个表达式
模板: lambda argument: manipulate(argument)
参数:argument就是这个匿名函数传入的参数,冒号后面是我们对这个参数的操作方法
numbers = [1,2,3,4,5]
add_one = list(map(lambda n:n + 1,numbers))
print(list(add_one))
[2, 3, 4, 5, 6]


map()
map()函数的主要作用是可以把一个方法依次执行在一个可迭代的序列上,比如List等,具体的信息如下:

基础语法:map(fun, iterable)
参数:fun是map传递给定可迭代序列的每个元素的函数。iterable是一个可以迭代的序列,序列中的每一个元素都可以执行fun
返回值:map object

nums = [3,"23",-2]
print(list(map(float,nums)))

Out: [3.0, 23.0, -2.0]

filter()

filter()方法借助于一个函数来过滤给定的序列,该函数测试序列中的每个元素是否为真。

基础语法:filter(fun, iterable)
参数:fun测试iterable序列中的每个元素执行结果是否为True,iterable为被过滤的可迭代序列
返回值:可迭代的序列,包含元素对于fun的执行结果都为True
要先有一个能返回True或者False的方法,或者表达式作为过滤条件就行了
简而言之就是filter可以帮助我们根据给出的条件过滤一组数据并返回结果
def fun(variable):
letters = ['a','e','i','o','u']
if (variable in letters):
return True
else:
return False
sequence = ['I','l','o','v','e','p','y','t','h','o','n']
filtered = list(filter(fun,sequence))
print(filtered)
sequence = ['I','l','o','v','e','p','y','t','h','o','n']
result = filter(lambda x: x in ['a','e','i','o','u'],sequence)
print(list(result))
['o', 'e', 'o']
reduce()
Reduce是一个非常有用的函数,用于在列表上执行某些计算并返回结果。它将滚动计算应用于列表中的连续值。例如,如果要计算整数列表的累积乘,或者求和等等

基础语法:reduce(function, iterable)
参数:fun是连续作用于iterable每一个元素的方法,新的参数为上一次执行的结果,iterable为被过滤的可迭代序列
返回值:最终的function返回结果
from functools import reduce
numbers = [1,2,3,4]
result_multiply = reduce(lambda x,y:x * y,numbers)
result_add = reduce(lambda x,y:x + y,numbers)
print(result_multiply)
print(result_add)
24
10

猜你喜欢

转载自www.cnblogs.com/songyuejie/p/11833927.html