Python: как изменить (последний) элемент кортежа?



Вопрос немного вводит в заблуждение, потому что кортежнеизменяем . Чего я хочу, так это:



Имея кортеж a = (1, 2, 3, 4) получаем кортеж b, который точно такой же, как a, за исключением последнего аргумента, который, скажем, дважды последний элемент a.



= > b == (1, 2, 3, 8)

478   3  

3 ответов:

b = a[:-1] + (a[-1]*2,)
То, что я делаю здесь, - это конкатенация двух кортежей, первый из которых содержит все, кроме последнего элемента, и новый Кортеж, содержащий мутацию последнего элемента. В результате получается новый Кортеж, содержащий то, что вы хотите. Обратите внимание, что для + возврата кортежа оба операнда должны быть кортежем.

Я бы сделал что-то вроде:

b=list(a)
b[-1]*=2
b=tuple(b)

Вот один из способов сделать это:

>>> a = (1, 2, 3, 4)
>>> b = a[:-1] + (a[-1]*2, )
>>> a
(1, 2, 3, 4)
>>> b
(1, 2, 3, 8)

Так что же происходит на второй строке? в[:-1] означает все, кроме последнего элемента. a[-1] - последний элемент, и мы умножаем его на два. (A[-1]*2,) превращает результат в кортеж, и срезанный кортеж сцепляется с ним с помощью оператора+. Результат помещается в b.

Вы, вероятно, можете подогнать это к вашему конкретному случаю.

Comments

    Ничего не найдено.