Python将元素添加到元组

我有一些object.ID-s我尝试作为元组存储在用户会话中。 当我添加第一个它的工作,但元组看起来像(u'2',)但是当我尝试使用mytuple = mytuple + new.id添加新的错误can only concatenate tuple (not "unicode") to tuple

你需要使第二个元素成为一个元组,例如:

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

从元组到列表元组:

 a = ('2',) b = 'b' l = list(a) l.append(b) tuple(l) 

或者添加更长的项目列表

 a = ('2',) items = ['o', 'k', 'd', 'o'] l = list(a) for x in items: l.append(x) print tuple(l) 

给你

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

这里的重点是:List是一个可变的序列types。 所以你可以通过添加或删除元素来改变给定的列表。 元组是一种不可变的序列types。 你不能改变一个元组。 所以你必须创build一个新的

从Python 3.5( PEP 448 )开始,您可以在元组,列表集和字典中进行解包:

 a = ('2',) b = 'z' new = (*a, b) 
 >>> 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') 

元组只能允许添加tuple 。 最好的办法是:

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

我试图与下面的数据,似乎都工作正常的情况相同。

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

#1表格

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

#2表格

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