page contents

map 函数和 reduce 函数?

轩辕小不懂 发布于 2021-11-10 14:08
阅读 594
收藏 0
分类:人工智能
2381
Nen
Nen
- 程序员

(1) 从参数方面来讲:

map()包含两个参数,第一个参数是一个函数,第二个是序列(列表 或元组)。其中,函数(即 map 的第一个参数位置的函数)可以接收一个或多

个参数。

reduce()第一个参数是函数,第二个是序列(列表或元组)。但是,其函数必须接收两个参数。

(2) 从对传进去的数值作用来讲:

map()是将传入的函数依次作用到序列的每个元素,每个元素都是独自被函数“作用”一次 。

reduce()是将传人的函数作用在序列的第一个元素得到结果后,把这个结果继续与下一个元素作用(累积计算)。

补充 Python 特殊函数

lambda 函数

lambda 是一个可以只用一行就能解决问题的函数,让我们先看下面的例子:

> def add(x):

... x += 1

... return x

...

>>> numbers = range(5)

>>> list(numbers)

[0, 1, 2, 3, 4]

>>> new_numbers = []

>>> for i in numbers:

... new_numbers.append(add(i))

...

>>> new_numbers

[1, 2, 3, 4, 5]

在上面的这个例子中,函数 add() 充当了一个中间角色,当然上面的例子也可以如下实现:

 new_numbers = [i+1 for i in numbers]

>>> new_numbers

[1, 2, 3, 4, 5]

首先我要说,上面的列表解析式其实是很好用的,但是我偏偏要用 lambda 这个函数代替 add(x) 

 lamb = lambda x: x+1

>>> new_numbers = []

>>> for i in numbers:

... new_numbers.append(lamb(i))

...

>>> new_numbers

[1, 2, 3, 4, 5]

在这里的 lamb 就相当于 add(x) ,lamb = lambda x : x+1 就相当于 add(x) 里的代码块。下面再写几个应用 lambda 的小例子:

>>> lamb(1,2)

3

>>> lamb1 = lambda x : x ** 2

>>> lamb1(5)

25

请先 登录 后评论