如果我有一个函数def f(a, b, c, d)
和两个元组,每个都有两个元素,有没有办法解压这些元组,以便我可以将它们的值发送给函数?
f(*tup1, *tup2)
答案 0 :(得分:25)
从the release of 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
答案 1 :(得分: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
答案 2 :(得分:-4)
f(tup1[0],tup1[1],tup2[0],tup2[1]) #not good enough?