функция, которая добавляет к первому индексу кортежа в списке, используя понимание списка - PullRequest
0 голосов
/ 29 октября 2018

У меня есть функция, которая принимает список кортежей и int. Затем к int добавляется индекс 1 каждого кортежа в списке. Использование списка понимания. Как я могу этого достичь? Предполагая, что у меня всегда есть int в первом индексе, а размер кортежа составляет len = 3

foo(lst, x):
>>> ret = [('hello', 2, 5), ('world', 10, 2)]
>>> foo(ret, 5)
[('hello', 7, 5), ('world', 15, 2)]

1 Ответ

0 голосов
/ 29 октября 2018

Вы можете использовать понимание списка:

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]
...