如何在函数调用中解压缩多个元组

Pau*_*nta 21 python tuples

如果我有一个函数def f(a, b, c, d)和两个元组,每个都有两个元素,有没有办法解压这些元组,以便我可以将它们的值发送给函数?

f(*tup1, *tup2)
Run Code Online (Sandbox Code Playgroud)

Gar*_*tty 25

Python 3.5.0发布以来,PEP 448"附加解包概括"为这个有效的Python提供了自然语法:

>>> f(*tup1, *tup2)
1 2 2 3
Run Code Online (Sandbox Code Playgroud)

在旧版本的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
Run Code Online (Sandbox Code Playgroud)

  • @Spacedman不,6个值会被发送,你会得到一个错误(或者它适用于需要6个参数的函数). (2认同)

jam*_*lak 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
Run Code Online (Sandbox Code Playgroud)