解压元组的pythonic方法是什么?

解压元组的pythonic方法是什么?,python,tuples,Python,Tuples,这太难看了。还有什么更像蟒蛇的方法呢 import datetime t= (2010, 10, 2, 11, 4, 0, 2, 41, 0) dt = datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], t[6]) 通常,您可以使用func(*tuple)语法。您甚至可以传递元组的一部分,就像您在这里尝试做的那样: t = (2010, 10, 2, 11, 4, 0, 2, 41, 0) dt = datetime.datetime

这太难看了。还有什么更像蟒蛇的方法呢

import datetime

t= (2010, 10, 2, 11, 4, 0, 2, 41, 0)
dt = datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], t[6])

通常,您可以使用
func(*tuple)
语法。您甚至可以传递元组的一部分,就像您在这里尝试做的那样:

t = (2010, 10, 2, 11, 4, 0, 2, 41, 0)
dt = datetime.datetime(*t[0:7])
这称为解包元组,也可用于其他可重用文件(如列表)。下面是另一个例子(来自:

提及


您可能想在文档中了解它:它适用于任意的可伸缩性。我想补充一点,这种语法在python 3.5中的任何地方都可以使用(不仅仅是在函数调用中),因此,例如
x,y,z=*(1,2,3)
等语句都可以正常工作(就像很久以前一样)。在其他列表项中是否有这样做的方法?比如
my_tuple=(“B”,“C”);“%s%s%s”%(“A”,*我的元组)
?没关系-我认为这是%s字符串替换方法的一个限制。使用
“{}{}{}”.format(“A”,*my_tuple)
就可以了。有人知道Python如何在内部实现解包的细节吗?
>>> range(3, 6)             # normal call with separate arguments
[3, 4, 5]
>>> args = [3, 6]
>>> range(*args)            # call with arguments unpacked from a list
[3, 4, 5]
 dt = datetime.datetime(*t[:7])