【python】map、reduce和filter

map函数

map(func, Iterable)
接收一个func函数和一个序列Iterable,将Iterable的每个元素经过func函数处理后,返回一个新的Iterable。
类似列表推导式:[func(item) for item in iterable]

#!/usr/bin/env python
# encoding: utf-8

def sqr(item):
    return item * item

if __name__ == '__main__':
    objList = [1, 2, 3]
    newList = map(sqr, objList)
    print(newList)
    print(list(newList))
    print([sqr(item) for item in objList])
输出结果:
<map object at 0x006325D0>
[1, 4, 9]
[1, 4, 9]

reduce函数

reduce(function, sequence, initial=None)
接收一个函数function和一个序列sequence,该函数需要接收两个参数x和y;
若initial的值为None,则function首次调用从sequence取两个元素分别赋值给参数x和y;
若initial的值不为None,则function首次调用参数x=initial,另外从sequence取一个元素赋值给参数y;
函数function上一次调用的返回结果作为x参数的值,并从sequence剩余元素中选取一个元素作为参数y的值传递给函数function,直到sequence元素选取结束;
返回结果为最后一次function调用的返回值。

#!/usr/bin/env python
# encoding: utf-8

from functools import reduce


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


if __name__ == '__main__':
    objList = [1, 2, 3, 4]
    print(reduce(add, objList))
    print(reduce(add, objList, 20))
输出结果为:
10
30

filter

filter(func, Iterable)
接收一个函数func和一个序列Iterable
函数func用于过滤掉Iterable中不符合条件的元素,返回一个由使得函数func返回值为True的元素组成的新的可迭代对象。

#!/usr/bin/env python
# encoding: utf-8

def func(item):
    return item % 2 == 0


if __name__ == '__main__':
    objList = [1, 2, 3, 4, 5]
    print(filter(func, objList))
    print(list(filter(func, objList)))
输出结果为:
<filter object at 0x01E52270>
[2, 4]

猜你喜欢

转载自blog.csdn.net/weixin_39974140/article/details/86308522