Maison > Article > développement back-end > Explication détaillée des fonctions python mapper, filtrer et réduire
Cet article partage avec vous une explication détaillée des fonctions python, filtrer et réduire. Le contenu est assez bon. J'espère qu'il pourra aider les amis dans le besoin
1 .map
mappera une fonction à tous les éléments d'une liste d'entrée. Voici sa spécification : Map
map(function_to_apply, list_of_inputs)La plupart du temps, nous souhaitons transmettre tous les éléments de la liste un par un et collecter le résultat. Par exemple :
items = [1, 2, 3, 4, 5] squared = []for i in items: squared.append(i**2)
nous permet de le faire d'une manière beaucoup plus simple et plus belle. Ça y est : Map
items = [1, 2, 3, 4, 5] squared = list(map(lambda x: x**2, items))La plupart du temps, on utilise des fonctions anonymes (lambdas) pour faire correspondre
,
J'ai donc fait la même chose ci-dessus. Non seulement pour une liste d’entrées, nous pouvons même l’utiliser pour une liste de fonctions ! map
def multiply(x): return (x*x)def add(x): return (x+x) funcs = [multiply, add]for i in range(5): value = map(lambda x: x(i), funcs) print(list(value)) # 译者注:上面print时,加了list转换,是为了python2/3的兼容性 # 在python2中map直接返回列表,但在python3中返回迭代器 # 因此为了兼容python3, 需要list转换一下 # Output: # [0, 0] # [1, 2] # [4, 4] # [9, 6] # [16, 8]
2.Filter
顾名思义,filter
过滤列表中的元素,并且返回一个由所有符合要求的元素所构成的列表,符合要求
即函数映射到该元素时返回值为True. 这里是一个简短的例子:
number_list = range(-5, 5) less_than_zero = filter(lambda x: x < 0, number_list) print(list(less_than_zero)) # 译者注:上面print时,加了list转换,是为了python2/3的兼容性 # 在python2中filter直接返回列表,但在python3中返回迭代器 # 因此为了兼容python3, 需要list转换一下 # Output: [-5, -4, -3, -2, -1]
这个filter
类似于一个for
循环,但它是一个内置函数,并且更快。
注意:如果map
和filter
对你来说看起来并不优雅的话,那么你可以看看另外一章:列表/字典/元组推导式。
3.Reduce
当需要对一个列表进行一些计算并返回结果时,Reduce
是个非常有用的函数。举个例子,当你需要计算一个整数列表的乘积时。
通常在 python 中你可能会使用基本的 for 循环来完成这个任务。
现在我们来试试 reduce:
from functools import reduce product = reduce( (lambda x, y: x * y), [1, 2, 3, 4] ) # Output: 24
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!