美文网首页
Python的map、reduce和fiter

Python的map、reduce和fiter

作者: 叶扬风起 | 来源:发表于2019-08-27 21:37 被阅读0次

1. Map

map函数接受两个参数,一个是函数,一个是Iterable,map将传入的函数一次作用到序列的每个元素,并把结果作为新的Iterator返回。


map()
r = map(str, [1,2,3,4,5])
print(list(r))
#['1', '2', '3', '4', '5']

map返回的是一个Iterator,Iterator是惰性序列,因此需要list()函数都计算出来并返回一个list。

2. reduce()

reduce同样接受两个参数,但是它会把结果继续和序列的下一个元素做累积计算

from functools import reduce

def fn(x, y):
    return x * 10 + y

def char2num(s):
    return{'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9}[s]

reduce(fn, map(char2num, '12345'))

3. filter()

filter()同样接受一个函数和一个序列,它把传入的函数依次作用于每个元素,然后根据返回的bool值,决定是否保留该元素

#筛选素数
def _odd_iter():
    n = 1
    while True:
        n = n + 2
        yield n
        
def _not_divisible(n):
    return lambda x : x % n > 0

def primes():
    yield 2
    it = _odd_iter()
    while True:
        n = next(it)
        yield n
        it = filter(_not_divisible(n), it)
        
for n in primes():
    if n < 1000:
        print(n)
    else: 
        break

相关文章

网友评论

      本文标题:Python的map、reduce和fiter

      本文链接:https://www.haomeiwen.com/subject/jryyectx.html