Detailed explanation of python functions map, filter, and reduce

零到壹度
Release: 2018-04-02 10:13:35
Original
1885 people have browsed it

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)
Copy after login
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)
Copy after login

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))
Copy after login
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]
Copy after login

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]
Copy after login

这个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
Copy after login

         

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!

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template