2016-08-10 55 views
0

我試圖將列表中的元組轉換爲列表。更準確地說,我只想刪除列表中的元組。原始數據集看起來像將元組轉換爲列表中的列表

collections = [[None], [(u'John Demsey ', u' Cornelia Guest')], [(u'Andres White ', u' Margherita Missoni')], [(u'Bibi Monahan, Tuki Br', u'o, ')], [(u'W$ 

我想achivee是:

collections = [[None], [u'John Demsey ', u' Cornelia Guest'], [u'Andres White ', u' Margherita Missoni']...] 

然而,用下面的代碼,我無法實現我的目標。

def conv(): 
    for i in range(len(collections)): 
     if collections[i] != None: 
      collections[i] = list(collections[i]) 
     else: 
      collections[i][0] = list(collections[i][0]) 
    return collections[i] 

conv = conv() 
print(conv) 

在代碼中,我試圖將元組轉換爲列表。但是,這看起來不行。有人能幫我找出問題並幫我糾正這個問題嗎?謝謝!!

回答

1

而是去chainitertools和列表理解:

from itertools import chain 

[list(i) if i else [i] for i in chain.from_iterable(collections)] 

#Out[110]: 
#[[None], 
# [u'John Demsey ', u' Cornelia Guest'], 
# [u'Andres White ', u' Margherita Missoni']] 
+0

非常感謝您的幫助:) – achimneyswallow

2

嘗試做這樣:

def conv(): 
    return [list(c[0]) if isinstance(c[0], tuple) else c for c in collections] 

在你的代碼也僅返回列表的最後一個元素。