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

Как распаковать несколько кортежей в вызове функции

Если у меня есть функция def f(a, b, c, d) и два кортежа, каждый с двумя элементами, есть ли способ распаковать эти кортежи, чтобы я мог отправлять их значения в функцию?

f(*tup1, *tup2)
4b9b3361

Ответ 1

От релиз Python 3.5.0, PEP 448 "Дополнительные распаковывающие обобщения" делает естественный синтаксис для этого действительного Python:

>>> f(*tup1, *tup2)
1 2 2 3

В более старых версиях Python вам может понадобиться объединить кортежи вместе, чтобы предоставить один расширенный аргумент:

>>> tup1 = 1, 2
>>> tup2 = 2, 3
>>> def f(a, b, c, d):
        print(a, b, c, d)

>>> f(*tup1+tup2)
1 2 2 3

Ответ 2

Другой подход с использованием chain

>>> from itertools import chain
>>> def foo(a,b,c,d):
        print a,b,c,d


>>> tup1 = (1,2)
>>> tup2 = (3,4)
>>> foo(*chain(tup1,tup2))
1 2 3 4

Ответ 3

f(tup1[0],tup1[1],tup2[0],tup2[1]) #not good enough?