Вы можете использовать понимание списка:
ret = [('hello', 2, 5), ('world', 10, 2)]
def foo(r, n):
return [e[:1] + (e[1] + n,) + e[2:] for e in r]
print(foo(ret, 5))
Вывод
[('hello', 7, 5), ('world', 15, 2)]
Объяснение
Основноечасть заключается в том, как создать новый кортеж, поэтому e[:1]
получает все до индекса 1 (как кортеж), затем выражение (e[1] + n,)
создает кортеж из 1 элемента с новым значением и получает остальную часть кортежа, используя e[2:]
.Обратите внимание, что вы не можете изменить значение элемента кортежа, потому что кортежи неизменны.
ОБНОВЛЕНИЕ
Если длина кортежа всегда равна трем, вы также можете сделать следующее:
def foo(r, n):
return [(a, n + b, c) for a, b, c in r]