Home  >  Article  >  Backend Development  >  Detailed explanation of python functions map, filter, and reduce

Detailed explanation of python functions map, filter, and reduce

零到壹度
零到壹度Original
2018-04-02 10:13:351841browse

This article shares with you a detailed explanation of the python functions map, filter, and reduce. The content is quite good. I hope it can help friends in need

##1 .map

Map will map a function to all elements of an input list. This is its specification:

Specification

map(function_to_apply, list_of_inputs)
Most of the time, we want to pass all the elements in the list to a function one by one and collect the output. For example:

items = [1, 2, 3, 4, 5]
squared = []for i in items:
    squared.append(i**2)

Map allows us to achieve it in a much simpler and more beautiful way. That's it:

items = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, items))
Most of the time, we use anonymous functions (lambdas) to match

map, So I did the same thing above. Not only for a list of inputs, we can even use it for a list of functions!

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循环,但它是一个内置函数,并且更快。

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


3.Reduce

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

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

现在我们来试试 reduce:

from functools import reduce
product = reduce( (lambda x, y: x * y), [1, 2, 3, 4] )
# Output: 24

         

The above is the detailed content of Detailed explanation of python functions map, filter, and reduce. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn