213 votes

Python ajoute un élément au tuple

J'ai quelques objets.ID-s que j'essaie de stocker dans la session de l'utilisateur comme tuple. Lorsque j'ajoute le premier, cela fonctionne mais le tuple ressemble à ceci (u'2',) mais lorsque j'essaie d'en ajouter un nouveau en utilisant mytuple = mytuple + new.id erreur obtenue can only concatenate tuple (not "unicode") to tuple .

378voto

Jon Clements Points 51556

Vous devez faire en sorte que le deuxième élément soit un 1-tuple, par exemple :

a = ('2',)
b = 'z'
new = a + (b,)

88voto

nitely Points 1286

Depuis Python 3.5 ( PEP 448 ), vous pouvez effectuer un déballage dans un tuple, un ensemble de listes et un dict :

a = ('2',)
b = 'z'
new = (*a, b)

39voto

antitrust Points 4853

Du tuple à la liste au tuple :

a = ('2',)
b = 'b'

l = list(a)
l.append(b)

tuple(l)

Ou avec une liste plus longue d'éléments à ajouter

a = ('2',)
items = ['o', 'k', 'd', 'o']

l = list(a)

for x in items:
    l.append(x)

print tuple(l)

vous donne

>>> 
('2', 'o', 'k', 'd', 'o')

Le point ici est : La liste est une mutable type de séquence. Vous pouvez donc modifier une liste donnée en ajoutant ou en supprimant des éléments. Tuple est un immuable type de séquence. Vous ne pouvez pas modifier un tuple. Vous devez donc créer un nouveau un.

16voto

Raul Kiran Gaddam Points 159

Le tuple ne peut que permettre d'ajouter tuple à elle. La meilleure façon de le faire est :

mytuple =(u'2',)
mytuple +=(new.id,)

J'ai essayé le même scénario avec les données ci-dessous, tout semble fonctionner correctement.

>>> mytuple = (u'2',)
>>> mytuple += ('example text',)
>>> print mytuple
(u'2','example text')

12voto

jamylak Points 38094
>>> x = (u'2',)
>>> x += u"random string"

Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    x += u"random string"
TypeError: can only concatenate tuple (not "unicode") to tuple
>>> x += (u"random string", )  # concatenate a one-tuple instead
>>> x
(u'2', u'random string')

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