Как добавить значение в кортеж?
Я работаю над script, где у меня есть список кортежей типа ('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')]
Возможно ли это?
Ответы
Ответ 1
Кортежи неизменяемы и не должны быть изменены - для этого используется тип списка. Вы можете заменить каждый кортеж на originalTuple + (newElement,)
, создав таким образом новый кортеж. Например:
t = (1,2,3)
t = t + (1,)
print t
(1,2,3,1)
Но я бы предпочел пойти со списками с самого начала, потому что они быстрее вставляют элементы.
И еще один намек: не перезаписывайте встроенное имя list
в своей программе, скорее вызовите переменную l
или другое имя. Если вы перезапишете встроенное имя, вы больше не сможете его использовать в текущей области.
Ответ 2
Основываясь на синтаксисе, я предполагаю, что это 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')]
Ответ 3
В Python вы не можете. Кортежи неизменяемы.
В содержащем списке вы можете заменить tuple ('1', '2', '3', '4')
на другой кортеж ('1', '2', '3', '4', '1234')
.
Ответ 4
Как и другие люди, кортежи в python неизменяемы, и единственный способ "изменить" один - создать новый с включенными добавленными элементами.
Но лучшим решением является список. Если необходимо вызвать какую-либо функцию или метод, требующий кортежа, создайте кортеж, используя кортеж (список).
Ответ 5
Я просматривал некоторые подробности, связанные с tuple
и list
, и я понял:
- Кортежи - это
Heterogeneous
тип данных коллекции
- Tuple имеет Фиксированная длина (для каждого типа)
- Кортеж Всегда конечный
Итак, чтобы добавить новый элемент в кортеж, нужно отбросить его на list
и выполнить операцию append()
, а затем снова вернуть его в кортеж.
Но лично я думал о том, что если Кортежи должны быть конечными, фиксированными длиной и если мы используем эти типы данных в нашей прикладной логике, тогда там должен быть не сценарий добавления новых элементов или обновления значения элемента в нем. Поэтому вместо списка кортежей он должен быть списком списка, верно ли я на этом?
Ответ 6
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)