사용자 세션에 튜플로 저장하려고하는 object.ID가 있습니다. 첫 번째를 추가하면 작동하지만 튜플처럼 보이지만 오류가 발생 (u'2',)
하여 새 것을 추가하려고하면 .mytuple = mytuple + new.id
can only concatenate tuple (not "unicode") to tuple
답변
두 번째 요소를 1- 튜플로 만들어야합니다. 예 :
a = ('2',)
b = 'z'
new = a + (b,)
답변
Python 3.5 ( PEP 448 ) 부터 튜플, 목록 세트 및 dict 내에서 압축을 풀 수 있습니다.
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는 변경 가능한 시퀀스 유형입니다. 따라서 요소를 추가하거나 제거하여 주어진 목록을 변경할 수 있습니다. 튜플은 불변 시퀀스 유형입니다. 튜플은 변경할 수 없습니다. 따라서 새로운 것을 만들어야합니다 .
답변
튜플은 추가 만 허용 할 수 있습니다 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')
답변
# 1 형태
a = ('x', 'y')
b = a + ('z',)
print(b)
# 2 형태
a = ('x', 'y')
b = a + tuple('b')
print(b)
답변
결론적으로, 튜플에 추가하는 가장 쉬운 방법은 괄호와 쉼표로 추가되는 요소를 묶는 것입니다.
t = ('a', 4, 'string')
t = t + (5.0,)
print(t)
out: ('a', 4, 'string', 5.0)