Elegant way to perform tuple arithmetic Elegant way to perform tuple arithmetic numpy numpy

Elegant way to perform tuple arithmetic


If you're looking for fast, you can use numpy:

>>> import numpy>>> numpy.subtract((10, 10), (4, 4))array([6, 6])

and if you want to keep it in a tuple:

>>> tuple(numpy.subtract((10, 10), (4, 4)))(6, 6)


One option would be,

>>> from operator import sub>>> c = tuple(map(sub, a, b))>>> c(6, 6)

And itertools.imap can serve as a replacement for map.

Of course you can also use other functions from operator to add, mul, div, etc.

But I would seriously consider moving into another data structure since I don't think this type of problem is fit for tuples


Use zip and a generator expression:

c = tuple(x-y for x, y in zip(a, b))

Demo:

>>> a = (10, 10)>>> b = (4, 4)>>> c = tuple(x-y for x, y in zip(a, b))>>> c(6, 6)

Use itertools.izip for a memory efficient solution.

help on zip:

>>> print zip.__doc__zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]Return a list of tuples, where each tuple contains the i-th elementfrom each of the argument sequences.  The returned list is truncatedin length to the length of the shortest argument sequence.