J'ai un tuple (x,y)
où x
est une ficelle et y
est un entier. Maintenant, je veux effectuer une opération sur y
, comme y += 1
, sans vouloir créer un nouveau tuple. Comment puis je faire ça?
Réponses:
5 pour la réponse № 1Les n-uplets sont immuables, vous ne pouvez donc pas modifier directement la variable
>>> t = ("foobar", 7)
>>> t[1] += 1
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
t[1] += 1
TypeError: "tuple" object does not support item assignment
Donc, vous devez attribuer un nouveau tuple
>>> t = (t[0], t[1]+1)
>>> t
("foobar", 8)
3 pour la réponse № 2
Vous pouvez "les tuples sont immuables. Toute tentative de changer un tuple existant aurait comme conséquence TypeError: "tuple" object does not support item assignment
.
Ce qui peut être fait est de relier le nom de l'objet à un nouveau tuple en se basant sur le précédent.
t = ("a", 1)
t = (t[0], t[1]+1)
assert t == ("a", 2)
2 pour la réponse № 3
Vous ne pouvez pas "t", car l'opération modifierait le tuple, ce qui n'est pas possible. Créez un nouveau tuple.
newtuple = (t[0], t[1] + 1)