web-dev-qa-db-fra.com

Insertion d'un élément dans un tuple

Oui, je comprends que les tuples sont immuables, mais la situation est telle que je dois insérer une valeur supplémentaire dans chaque tuple. Donc, l'un des articles est le montant, je dois ajouter un nouvel article à côté dans une devise différente, comme ceci:

('Product', '500.00', '1200.00')

Possible?

Merci!

42
3zzy

Vous pouvez le caster dans une liste, insérer l'élément, puis le restituer à un tuple.

a = ('Product', '500.00', '1200.00')
a = list(a)
a.insert(3, 'foobar')
a = Tuple(a)
print a

>> ('Product', '500.00', '1200.00', 'foobar')
52
swanson

Étant donné que les tuples sont immuables, cela se traduira par un nouveau tuple. Il suffit de le replacer là où vous avez obtenu l'ancien.

sometuple + (someitem,)
46

Vous devez absolument créer un nouveau Tuple - vous pouvez alors lier à nouveau le nom (ou toute référence [s]) de l'ancien Tuple au nouveau. Le += L'opérateur peut aider (s'il n'y avait qu'une seule référence à l'ancien Tuple), par exemple:

thetup += ('1200.00',)

fait l'ajout et la reliure d'un seul coup.

20
Alex Martelli
def Tuple_insert(tup,pos,ele):
    tup = tup[:pos]+(ele,)+tup[pos:]
    return tup

Tuple_insert(tup,pos,9999)

tup: Tuple
pos: Position à insérer
ele: Élément à insérer

15
Vidya Sagar

Pour le cas où vous n'ajoutez pas à la fin du tuple

>>> a=(1,2,3,5,6)
>>> a=a[:3]+(4,)+a[3:]
>>> a
(1, 2, 3, 4, 5, 6)
>>> 
7
John La Rooy

t = (1,2,3,4,5)

t = t + (6,7)

sortie:

(1,2,3,4,5,6,7)

3
hardik patel

une façon est de le convertir en liste

>>> b=list(mytuple)
>>> b.append("something")
>>> a=Tuple(b)
3
ghostdog74

Vous pouvez également coder simplement comme ceci:

T += (new_element,)
2
Vivek