Discuss / Python / map & reduce & itertools计算pi

map & reduce & itertools计算pi

Topic source
import itertools, math
from functools import reduce

def pi(N):
    odds = itertools.count(1,2)
    ns = list(itertools.takewhile(lambda x: x <= 2*N-1, odds))
    pp = reduce(lambda x, y: x + y, map(lambda x: math.pow(-1, ns.index(x))*4/x, ns))

    return pp
def pi(N):
    cc = itertools.cycle([4, -4])
    odds = itertools.count(1,2)
    ns = list(itertools.takewhile(lambda x: x <= 2*N-1, odds))
    pp = reduce(lambda x, y: x + y, map(lambda x: next(cc)/x, ns))
    return pp

这种方法更快

RiverSunStar

#3 Created at ... [Delete] [Delete and Lock User]

强啊


  • 1

Reply