Discuss / Python / 自己写的,感觉没有别人的巧

自己写的,感觉没有别人的巧

Topic source

浴火化影

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

return sum((next(itertools.cycle([4,-4]))/next(itertools.count(1,2))) for i in range(N))

邦道咨询

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

40.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

邦道咨询

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

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

Reply