计算圆周率可以根据公式:
4=1−1/3+1/5−1/7+...
利用Python提供的itertools模块,我们来计算这个序列的前N项和:
def pi(N):
ns = itertools.takewhile(lambda a: a < 2 * N, itertools.count(1, 2))
fat = itertools.cycle([1, -1])
return sum(map(lambda a: 4 * next(fat) / a, ns))