自己写的,感觉没有别人的巧
Topic source40.0 400.0 4000.0 40000.0 Traceback (most recent call last): File "useitertools.py", line 14, in <module> assert 3.04 < pi(10) < 3.05 AssertionError
def pi(N): c1=itertools.cycle([4,-4]) c2=itertools.count(1,2) return sum([next(c1)/next(c2) for i in range(N)])
sum((next(itertools.cycle([4,-4]))/next(itertools.count(1,2))) for i in range(N))
每次next 都是新生成一个 cycle 或 count, 所以,每次都是生成第一个数 前面为 4,后面为1 ,循环10次,相加刚好40。
- 1
浴火化影
return sum((next(itertools.cycle([4,-4]))/next(itertools.count(1,2))) for i in range(N))