2010-02-10 32 views
77

這很難看。什麼是更加Python的方式來做到這一點?解開元組的Python方法是什麼?

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]) 
+5

您可能需要在文檔閱讀一下:http://docs.python.org/tutorial/controlflow.html #解包參數列表 – 2010-02-10 16:18:38

回答

111

通常,您可以使用func(*tuple)語法。你甚至可以通過元組的一部分,這似乎是你想在這裏做的:

t = (2010, 10, 2, 11, 4, 0, 2, 41, 0) 
dt = datetime.datetime(*t[0:7]) 

這就是所謂的拆包一個元組,可以用於其他iterables(如列表)太。這裏還有一個例子(從Python tutorial):

>>> 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] 
+6

它適用於任意迭代。 – 2010-02-10 16:36:46

+2

我想補充一點,這個語法可以在python 3.5的任何地方(不僅僅是在函數調用中)工作,所以像'x,y,z = *(1,2,3)'這樣的語句可以正常工作它應該是很久以前) – Nearoo 2016-01-01 16:05:16

+0

它有一種方法可以在其他列表項中執行此操作嗎?像'my_tuple =(「B」,「C」); 「%s%s%s」%(「A」,* my_tuple)'? – Dannid 2016-03-24 18:10:20

相關問題