← 返回首页
Python3基础教程(二十三)
发表时间:2022-03-30 11:06:56
map/reduce

1.map

map() 会根据提供的函数对指定序列做映射。第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

实例:

# -*- coding: utf-8 -*-
# @Time : 2022/3/30 12:50
# @File : map.py
# @Software : PyCharm

def add(x, y):
    return x + y

# 提供了两个列表,对相同位置的列表数据进行相加
odd = [1, 3, 5, 7, 9]
even = [2, 4, 6, 8, 10]

#Python 3.x的map返回迭代器。
print(map(add, even, odd))
#使用 list() 转换为列表
print(list(map(add, even, odd)))

运行结果:

<map object at 0x000001EA0232BDC0>
[3, 7, 11, 15, 19]

2.reduce

reduce() 函数会对参数序列中元素进行累积。函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

注意:Python3.x reduce() 已经被移到 functools 模块里,如果我们要使用,需要引入 functools 模块来调用 reduce() 函数。

实例:

# -*- coding: utf-8 -*-
# @Time : 2022/3/30 13:00
# @File : reduce.py
# @Software : PyCharm

from functools import reduce


def add(x, y):
    return x + y


# 计算1-100的求和
print(reduce(add, range(101)))
# 直接用Python内建函数sum()
print(sum(range(101)))

运行结果:

5050
5050