답변:
두 번째 요소를 1- 튜플로 만들어야합니다. 예 :
a = ('2',)
b = 'z'
new = a + (b,)
(a+b)*c
new = a + b
대신에 할 수 있습니다 new = a + (b,)
. AFAICT는 python3 및 python2.7에서 동일하게 작동합니다.
튜플에서 목록으로 튜플로 :
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는 변경 가능한 시퀀스 유형입니다. 따라서 요소를 추가하거나 제거하여 주어진 목록을 변경할 수 있습니다. 튜플은 불변 시퀀스 유형입니다. 튜플은 변경할 수 없습니다. 따라서 새로운 것을 만들어야합니다 .
list
하여 처음 에 변환하고 항목을 추가 한 다음 마지막으로 변환하면 tuple
이것이 가장 좋은 해결책입니다.
튜플은 추가 만 허용 할 수 있습니다 tuple
. 가장 좋은 방법은 다음과 같습니다.
mytuple =(u'2',)
mytuple +=(new.id,)
아래 데이터를 사용하여 동일한 시나리오를 시도했지만 모두 제대로 작동하는 것 같습니다.
>>> mytuple = (u'2',)
>>> mytuple += ('example text',)
>>> print mytuple
(u'2','example text')
>>> 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')
a = ('x', 'y')
b = a + ('z',)
print(b)
a = ('x', 'y')
b = a + tuple('b')
print(b)
TypeError: 'int' object is not iterable