2013-05-03 50 views
0

的名單上有元組的列表:如何解壓不定長度

my_lst = [('2.0', '1.01', '0.9'), ('-2.0', '1.12', '0.99')] 

我正在尋找一個解決方案,以便它打印出的值的逗號分隔線,以解開每個值:

2.0, 1.01, 0.9, -2.0, 1.12, 0.99 

問題是,列表的長度各不相同。

回答

4

使用join兩次:

>>> lis=[('2.0', '1.01', '0.9'), ('-2.0', '1.12', '0.99')] 
>>> ", ".join(", ".join(x) for x in lis) 
'2.0, 1.01, 0.9, -2.0, 1.12, 0.99' 
1
for i in my_lst: 
    for j in i: 
     print j, ", " 
4

使用可以使用itertools chain(..)

>>> from itertools import chain 
>>> my_lst = [('2.0', '1.01', '0.9'), ('-2.0', '1.12', '0.99')] 
>>> list(chain(*my_lst)) 
['2.0', '1.01', '0.9', '-2.0', '1.12', '0.99'] 

然後加入一個「,」。

>>> ",".join(list(chain(*my_lst))) 
'2.0,1.01,0.9,-2.0,1.12,0.99' 
+1

我會使用'chain.from_iterable'來代替它,雖然它在這個應用程序中並不重要。 – mgilson 2013-05-03 15:59:02

1

還有標準的2-d可迭代的扁平化機制:

>>> ', '.join(x for y in lis for x in y) 
'2.0, 1.01, 0.9, -2.0, 1.12, 0.99' 

雖然我更喜歡chain.from_iterable

1

您可以使用itertools.chain,像這樣:

list(itertools.chain(*lst)) 

或使用一些功能如:

def chain(*iters): 
    for it in iters: 
     for elem in it: 
      yield elem