21

関数def f(a, b, c, d)と 2 つのタプルがあり、それぞれに 2 つの要素がある場合、それらの値を関数に送信できるようにこれらのタプルをアンパックする方法はありますか?

f(*tup1, *tup2)
4

2 に答える 2

25

Python 3.5.0 のリリース時点で、PEP 448 "Additional Unpacking Generalizations"により、この有効な 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
于 2012-05-12T15:00:46.367 に答える
11

を使用した別のアプローチ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
于 2012-05-12T15:02:50.247 に答える