2016-08-10 57 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] 

在你的代码也仅返回列表的最后一个元素。