Discuss / Python / 学了内置模块itertools

学了内置模块itertools

Topic source

先交作业:

def pi(N):
    ' 计算pi的值 '
    # step 1: 创建一个奇数序列: 1, 3, 5, 7, 9, ...
    odd = itertools.count(1,2)
    # step 2: 取该序列的前N项: 1, 3, 5, 7, 9, ..., 2*N-1.
    odd_n = itertools.takewhile(lambda x: x <= 2*N - 1,odd)
    # step 3: 添加正负符号并用4除: 4/1, -4/3, 4/5, -4/7, 4/9, ...
    num_n = map(lambda x:(-1)**round(x%4/4)*4/x,odd_n)
    # step 4: 求和:
    return sum(num_n)

包含一堆生成迭代器的类和函数

itertools.count(start=0,step=1)生成无限序列迭代器

itertools.cycle(iterable object)生成无限重复的迭代器

itertools.repeat(object[,times])生成固定次数重复的迭代器

itertools.chain(iterable object,iterable object)把两个可迭代对象连接起来变成一个新的迭代器

itertools.groupby(iterable object)把重复的分为一组


  • 1

Reply