Подтвердить что ты не робот

Как добавить значение в кортеж?

Я работаю над 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')]

Возможно ли это?

4b9b3361

Ответ 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)