【发布时间】:2016-11-07 02:44:52
【问题描述】:
谁能解释以下内容?我正在使用 Python 2.5
考虑 1*3*5*7*9*11 ... *49。如果您在 IPython(x,y) 交互式控制台中键入所有内容,您将得到 58435841445947272053455474390625L,这是正确的。 (为什么是奇数:就像我最初做的那样)
Python multiply.reduce() 或 prod() 应该在等效范围内产生相同的结果。它确实,直到某一点。这里,已经错了:
: k = range(1, 50, 2)
: multiply.reduce(k)
: -108792223
使用 prod(k) 也会生成 -108792223 作为结果。对于长度为 12 的等效范围(即 k = range(1,24,2)),开始出现其他不正确的结果。
我不知道为什么。有人可以帮忙吗?
【问题讨论】:
-
呃,
mutiply.reduce是什么?它是在哪里定义的? -
@SilentGhost: 好像是个麻木的东西
-
functools.reduce(operator.mul, range(1, 50, 2))给出58435841445947272053455474390625L。