diff options
Diffstat (limited to 'game/python-extra/utils/math.py')
-rw-r--r-- | game/python-extra/utils/math.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/game/python-extra/utils/math.py b/game/python-extra/utils/math.py new file mode 100644 index 0000000..eaae187 --- /dev/null +++ b/game/python-extra/utils/math.py @@ -0,0 +1,16 @@ +import collections +import operator + +# py3 doesn't include reduce as a builtin +try: + reduce +except NameError: + from functools import reduce + + +def product(sequence, initial=1): + """like the built-in sum, but for multiplication.""" + if not isinstance(sequence, collections.Iterable): + raise TypeError("'{}' object is not iterable".format(type(sequence).__name__)) + + return reduce(operator.mul, sequence, initial) |