2014-10-11 52 views
0

我有一個tuple同時包含標量和列表郵編名單

(25.69, [25.5, 29.5], [0.00153, 0.0222], 0.0, [0.04109, 0.08877], [0.31393, 0.34876], [0.75, 0.63]) 

我需要第一tuple這樣的結果是上運行:

((25,69, 25.5, 0.00153, 0.0, 0.04109, 0.31393, 0.75), (25.69, 29.5, 0.222, 0.0, 0.08877, 0.34876, 0.63)) 

第一個列表表示需要傳遞給函數的參數的組合。我需要將它轉換爲兩個tuplestuple,這樣每個都可以傳遞給該函數。

我看過zip,mapitertools.izip_longest但是每個都需要參數已經被拆分。

回答

3

使用zipgenerator expressionconditional expression

>>> xs = (25.69, [25.5, 29.5], [0.00153, 0.0222], 
....  0.0, [0.04109, 0.08877], [0.31393, 0.34876], [0.75, 0.63]) 
>>> zip(*(x if isinstance(x, list) else [x, x] for x in xs)) # list(zip(...)) in Py 3 
[(25.69, 25.5, 0.00153, 0.0, 0.04109, 0.31393, 0.75), 
(25.69, 29.5, 0.0222, 0.0, 0.08877, 0.34876, 0.63)] 

用於標量值轉換爲列表中的條件表達式。

x if isinstance(x, list) else [x, x] 
+0

感謝伴侶,完美 – 2014-10-11 06:16:03