Ответ 1
Вы можете отправить его в список, вставить элемент, а затем вернуть его в кортеж.
a = ('Product', '500.00', '1200.00')
a = list(a)
a.insert(3, 'foobar')
a = tuple(a)
print a
>> ('Product', '500.00', '1200.00', 'foobar')
Да, я понимаю, что кортежи неизменяемы, но ситуация такова, что мне нужно вставить дополнительное значение в каждый кортеж. Таким образом, одним из элементов является сумма, мне нужно добавить новый элемент рядом с ним в другой валюте, например:
('Product', '500.00', '1200.00')
Возможные?
Спасибо!
Вы можете отправить его в список, вставить элемент, а затем вернуть его в кортеж.
a = ('Product', '500.00', '1200.00')
a = list(a)
a.insert(3, 'foobar')
a = tuple(a)
print a
>> ('Product', '500.00', '1200.00', 'foobar')
Поскольку кортежи неизменяемы, это приведет к появлению нового кортежа. Просто поместите его обратно, где вы получили старый.
sometuple + (someitem,)
Вам абсолютно необходимо создать новый кортеж, после чего вы можете переписать имя (или любую ссылку [s]) из старого кортежа в новый. Оператор +=
может помочь (если была только одна ссылка на старый кортеж), например:
thetup += ('1200.00',)
делает добавление и повторное связывание одним махом.
def tuple_insert(tup,pos,ele):
tup = tup[:pos]+(ele,)+tup[pos:]
return tup
tuple_insert(tup,pos,9999)
tup: tuple
pos: Позиция для вставки
ele: Элемент для вставки
В случае, когда вы не добавляете в конец кортежа
>>> a=(1,2,3,5,6)
>>> a=a[:3]+(4,)+a[3:]
>>> a
(1, 2, 3, 4, 5, 6)
>>>
один способ - преобразовать его в список
>>> b=list(mytuple)
>>> b.append("something")
>>> a=tuple(b)
t = (1,2,3,4,5)
t = t + (6,7)
вывод:
(1,2,3,4,5,6,7)
Вы можете просто прописать код:
T += (new_element,)