J'ai pseudo-code comme ceci:
if( b < a) return (1,0)+foo(a-b,b)
4 Réponses :
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))
tuple (x + y pour x, y dans izip (xs, ys)) code>.
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 code> tronquera silencieusement le tuple plus long sur la longueur du plus court. Cela peut ou non être un problème.
J'irais pour ou, plus naturellement: p>
Travaux - mais avoir à importer des numéros pourrait être surchargé pour des codes minuscules.
tuple(itertools.imap(operator.add, a, b))
creuser le style mais nécessite une autre importation.
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))