it-swarm.com.de

Python-Element zum Tupel hinzufügen

Ich habe einige object.ID-s, die ich in der Benutzersitzung als Tuple speichern möchte. Wenn ich das erste hinzufüge, funktioniert es, aber Tuple sieht aus wie (u'2',), aber wenn ich versuche, ein neues hinzuzufügen, das mytuple = mytuple + new.id verwendet, wurde Fehler can only concatenate Tuple (not "unicode") to Tuple angezeigt. 

110
Goran

Sie müssen das zweite Element zu einem 1-Tuple machen, zB:

a = ('2',)
b = 'z'
new = a + (b,)
219
Jon Clements

Seit Python 3.5 ( PEP 448 ) können Sie das Auspacken innerhalb eines Tuples, eines Listensets und eines Diktats durchführen:

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

Von Tuple zur Liste zu Tuple:

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

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

Tuple(l)

Oder mit einer längeren Liste von Elementen, die angehängt werden sollen

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

l = list(a)

for x in items:
    l.append(x)

print Tuple(l)

gibt Ihnen

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

Der Punkt hier ist: Liste ist ein mutable Sequenztyp. Sie können also eine bestimmte Liste ändern, indem Sie Elemente hinzufügen oder entfernen. Tuple ist ein unveränderlicher Sequenztyp. Sie können einen Tuple nicht wechseln. Sie müssen also ein neues erstellen.

24
octoback

Tuple kann nur das Hinzufügen von Tuple zulassen. Am besten geht es:

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

Ich habe das gleiche Szenario mit den unten angegebenen Daten ausprobiert, alles scheint gut zu funktionieren.

>>> mytuple = (u'2',)
>>> mytuple += ('example text',)
>>> print mytuple
(u'2','example text')
11
user3798348
>>> 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')
10
jamylak

Formular Nr. 1

a = ('x', 'y')
b = a + ('z',)
print(b)

Formular Nr. 2

a = ('x', 'y')
b = a + Tuple('b')
print(b)
0
britodfbr