Explication détaillée des fonctions python mapper, filtrer et réduire

零到壹度
Libérer: 2018-04-02 10:13:35
original
1891 Les gens l'ont consulté

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

Spécification

map(function_to_apply, list_of_inputs)
Copier après la connexion
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)
Copier après la connexion

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))
Copier après la connexion
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]
Copier après la connexion

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]
Copier après la connexion

这个filter类似于一个for循环,但它是一个内置函数,并且更快。

注意:如果mapfilter对你来说看起来并不优雅的话,那么你可以看看另外一章:列表/字典/元组推导式


3.Reduce

当需要对一个列表进行一些计算并返回结果时,Reduce 是个非常有用的函数。举个例子,当你需要计算一个整数列表的乘积时。

通常在 python 中你可能会使用基本的 for 循环来完成这个任务。

现在我们来试试 reduce:

from functools import reduce
product = reduce( (lambda x, y: x * y), [1, 2, 3, 4] )
# Output: 24
Copier après la connexion

         

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal