148 votes

Python tuple opérations

Est-il de toute façon à obtenir un tuple opérations en Python à travailler comme ça:

>>> a = (1,2,3)
>>> b = (3,2,1)
>>> a + b
(4,4,4)

au lieu de:

>>> a = (1,2,3)
>>> b = (3,2,1)
>>> a + b
(1,2,3,3,2,1)

Je sais que ça fonctionne comme ça, parce que l' __add__ et __mul__ méthodes sont définies pour fonctionner comme ça. Donc le seul moyen serait de les redéfinir?

173voto

Triptych Points 70247
map(sum,zip(a,b))

163voto

ironfroggy Points 3496
import operator
tuple(map(operator.add, a, b))

43voto

Boaz Shvartzman Points 131

Cette solution ne nécessite pas l'importation:

tuple(map(lambda x, y: x + y, tuple1, tuple2))

22voto

Dana Points 9876

Sorte de combiné les deux premières réponses, avec un réglage ironfroggy code de façon à ce qu'elle retourne un tuple:

import operator

class stuple(tuple):
    def __add__(self, other):
        return self.__class__(map(operator.add, self, other))
        # obviously leaving out checking lengths

>>> a = stuple([1,2,3])
>>> b = stuple([3,2,1])
>>> a + b
(4, 4, 4)

Remarque: l'utilisation d' self.__class__ au lieu de stuple pour la facilité de sous-classement.

22voto

Mike Points 171

from numpy import *

a = array( [1,2,3] )
b = array( [3,2,1] )

print a + b

donne array([4,4,4]).

Voir http://www.scipy.org/Tentative_NumPy_Tutorial

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X