Как я могу скопировать неизменяемый объект, такой как кортеж в Python?
copy.copy()
и copy.deepcopy()
просто скопируйте ссылку для неизменяемого объекта как кортеж.
Как создать дублируемую копию первого неизменяемого объекта в другой ячейке памяти?
Ответы
Ответ 1
Вы ищете deepcopy
.
from copy import deepcopy
tup = (1, 2, 3, 4, 5)
put = deepcopy(tup)
По общему признанию, идентификатор этих двух кортежей укажет на тот же адрес. Поскольку кортеж является неизменным, на самом деле нет никакого смысла создавать другую его копию, точную. Однако обратите внимание, что кортежи могут содержать изменчивые элементы, а deepcopy/id ведет себя так, как вы ожидаете:
from copy import deepcopy
tup = (1, 2, [])
put = deepcopy(tup)
tup[2].append('hello')
print tup # (1, 2, ['hello'])
print put # (1, 2, [])
Ответ 2
Добавьте к нему пустой кортеж:
>>> a = (1, 2, 3)
>>> a is a+tuple()
False
Конкатенация кортежей всегда возвращает новый отдельный кортеж, даже если результат оказывается равным.
Ответ 3
попробуйте следующее:
tup = (1,2,3)
nt = tuple(list(tup))
И я думаю, что добавление пустого кортежа намного лучше.