Discuss / Python / 记录一下

记录一下

Topic source

viper1090

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

from functools import reduce

def pi(N):

    ' 计算pi的值 '

    # step 1: 创建一个奇数序列: 1, 3, 5, 7, 9, ...

    odd_sq = itertools.count(1, 2)

    # step 2: 取该序列的前N项: 1, 3, 5, 7, 9, ..., 2*N-1.

    l1 = list(itertools.takewhile(lambda x: x <= 2*N-1, odd_sq))

    # step 3: 添加正负符号并用4除: 4/1, -4/3, 4/5, -4/7, 4/9, ...

    m = map(lambda x: 4 / x[1] if x[0] % 2 == 0 else -4 / x[1], enumerate(l1))

    # step 4: 求和:

    result = reduce(lambda x, y: x + y, m)

    return result


  • 1

Reply