8
votes

Comment ajouter avec des tuples

J'ai pseudo-code comme ceci:

if( b < a)
   return (1,0)+foo(a-b,b)


0 commentaires

4 Réponses :


12
votes

Voulez-vous faire de l'élément d'élément-sage ou pour ajouter les tuples? Par défaut, Python fait

if( b < a) return myadd((1,0),foo(a-b,b))


4 commentaires

tuple (x + y pour x, y dans izip (xs, ys)) .


exactement je veux faire quelque chose comme "MyAdd" c'est le meilleur moyen?


Oui, et le commentaire de Delnan est plus pensif.


Si les tuples sont de longueurs différentes, votre MyAdd tronquera silencieusement le tuple plus long sur la longueur du plus court. Cela peut ou non être un problème.



16
votes

J'irais pour xxx

ou, plus naturellement: xxx


1 commentaires

Travaux - mais avoir à importer des numéros pourrait être surchargé pour des codes minuscules.



2
votes
tuple(itertools.imap(operator.add, a, b))

1 commentaires

creuser le style mais nécessite une autre importation.



2
votes

Si vous voulez + code> pour agir de cette façon, vous pouvez la sous-classement tuple code> et remplacer l'addition:

class mytup(tuple):
    def __add__(self, other):
        if len(self) != len(other):
             return NotImplemented # or raise an error, whatever you prefer
         else:
             return mytup(x+y for x,y in izip(self,other))


0 commentaires