Python函数式编程map()、reduce()

一、map()

格式:map(func, *iterables)
map函数接受两个参数,第一个是要执行的函数,第二个是可迭代对象,可迭代对象可以传入多个参数。

map()函数是将func作用于iterables中的每一个元素,并用一个列表给出返回值。如果func为None,作用同zip()。

传入一个可迭对象

def func(x):
    return x*x
lists = [1, 2, 3, 4]
l = list(map(func, lists))
print(l)

结果:[1, 4, 9, 16]

传入两个可迭对象

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

lists = [1, 2, 3, 4]
lists2 = [1, 2, 3, 4]
l = list(map(func, lists, lists2))
print(l)
结果:[2, 4, 6, 8]
二、reduce()

格式:reduce(function, sequence, initial=None)
reduce函数接受三个参数,第一个是要执行的函数,第二个是序列,第三个是默认值。第一个函数必须有两个参数。

reduce函数即为化简,它是这样一个过程:每次迭代,将上一次的迭代结果(第一次时为init的元素,如没有init则为seq的第一个元素)与下一个元素一同执行一个二元的func函数。在reduce函数中,init是可选的,如果使用,则作为第一次迭代的第一个元素使用。

例子:
不传入默认值

from functools import reduce

lists = ['a', 'b', 'c', 'd']
r = reduce(lambda x, y: x+y, lists)
print(r)

结果:abcd

传入默认值

from functools import reduce

lists = ['a', 'b', 'c', 'd']
r = reduce(lambda x, y: x+y, lists, '你好')
print(r)

结果:你好abcd
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容