Я работаю над сценарием, в котором есть список таких кортежей ('1','2','3','4')
. например:
list = [('1','2','3','4'),
('2','3','4','5'),
('3','4','5','6'),
('4','5','6','7')]
Теперь мне нужно добавить '1234'
, '2345'
, '3456'
и , '4567'
соответственно , в конце каждого кортежа. например:
list = [('1','2','3','4','1234'),
('2','3','4','5','2345'),
('3','4','5','6','3456'),
('4','5','6','7','4567')]
Это вообще возможно?
Ответы:
Кортежи неизменяемы и не должны изменяться - для этого и предназначен тип списка. Вы можете заменить каждый кортеж на
originalTuple + (newElement,)
, создав таким образом новый кортеж. Например:t = (1,2,3) t = t + (1,) print t (1,2,3,1)
Но я бы предпочел использовать списки с самого начала, потому что они быстрее вставляют элементы.
И еще один совет: не перезаписывайте встроенное имя
list
в вашей программе, лучше назовите переменнуюl
или другое имя. Если вы замените встроенное имя, вы больше не сможете его использовать в текущей области.источник
t += 1,
sqlite3
базу данных и мне нужно создать кортеж из добавляемых значений (поскольку требуется синтаксисVALUES (v1, v2, v3, ...)
. В этом случае зная, как добавлять значения в Кортеж очень полезенСудя по синтаксису, я предполагаю, что это Python. Суть кортежа в том, что он неизменяемый, поэтому вам нужно заменить каждый элемент новым кортежем:
list = [l + (''.join(l),) for l in list] # output: [('1', '2', '3', '4', '1234'), ('2', '3', '4', '5', '2345'), ('3', '4', '5', '6', '3456'), ('4', '5', '6', '7', '4567')]
источник
В Python вы не можете. Кортежи неизменяемы.
Однако в содержащем списке вы можете заменить кортеж
('1', '2', '3', '4')
другим('1', '2', '3', '4', '1234')
кортежем.источник
Как упоминалось в других ответах, кортежи неизменяемы после создания, и список может лучше служить вашим целям.
Тем не менее, еще один вариант создания нового кортежа с дополнительными элементами - использовать оператор splat:
new_tuple = (*old_tuple, 'new', 'items')
Мне нравится этот синтаксис, потому что он выглядит как новый кортеж и ясно передает, что вы пытаетесь сделать.
Возможное решение с помощью splat:
list = [(*i, ''.join(i)) for i in list]
источник
Как ответили другие, кортежи в python неизменяемы, и единственный способ «изменить» один - создать новый с добавленными элементами.
Но лучшее решение - это список. Когда необходимо вызвать любую функцию или метод, для которых требуется кортеж, создайте кортеж, используя кортеж (список).
источник
Я просматривал некоторые детали, связанные с
tuple
иlist
, и понял следующее:Heterogeneous
типом данных коллекцииТаким образом, для добавления нового элемента в кортеж необходимо преобразовать его
list
и выполнитьappend()
операцию с ним, а затем снова вернуть его в кортеж.источник
list_of_tuples = [('1', '2', '3', '4'), ('2', '3', '4', '5'), ('3', '4', '5', '6'), ('4', '5', '6', '7')] def mod_tuples(list_of_tuples): for i in range(0, len(list_of_tuples)): addition = '' for x in list_of_tuples[i]: addition = addition + x list_of_tuples[i] = list_of_tuples[i] + (addition,) return list_of_tuples # check: print mod_tuples(list_of_tuples)
источник
OUTPUTS = [] for number in range(len(list_of_tuples))): tup_ = list_of_tuples[number] list_ = list(tup_) item_ = list_[0] + list_[1] + list_[2] + list_[3] list_.append(item_) OUTPUTS.append(tuple(list_))
ВЫХОДЫ - это то, что вы желаете
источник