2016-12-05 37 views
0

的名单我有这样转换列表的列表,以字符串

list1 = [['I am a student'], ['I come from China'], ['I study computer science']] 
len(list1) = 3 

列表的列表现在我想将其转换成字符串列表这样

list2 = ['I', 'am', 'a', 'student','I', 'come', 'from', 'China', 'I','study','computer','science'] 
len(list2) = 12 

我我知道,我可以转换这样

new_list = [','.join(x) for x in list1] 

但它返回

['I,am,a,student','I,come,from,China','I,study,computer,science'] 
len(new_list) = 3 

我也试过这个

new_list = [''.join(x for x in list1)] 

,但它提供了以下错误

TypeError: sequence item 0: expected str instance, list found 

我如何在列表1的子表中提取每一个字,并把它转换成字符串列表?我使用python 3在Windows 7

+0

列表1有一个元素是有三个元素的列表。 – bohrax

+0

如果列表1有你的问题可能应该改写,以“转换句子的列表单词列表”三个要素 – bohrax

+0

@bohrax,对不起,我已编辑的问题,它应该是列表的列表。 –

回答

1

按照你的编辑,我觉得现在最透明的方法是,通过了另一种答案(这已经被删除的答案,我认为)之一。我已经添加了一些空白,使其更容易理解这是怎么回事:

list1 = [['I am a student'], ['I come from China'], ['I study computer science']] 
list2 = [ 
    word 
     for sublist in list1 
     for sentence in sublist 
     for word in sentence.split() 
] 
print(list2) 

打印:

['I', 'am', 'a', 'student', 'I', 'come', 'from', 'China', 'I', 'study', 'computer', 'science'] 
+0

对不起,我编辑了这个问题,它应该是列表的列表。 –

+0

见编辑答案 – jez

0

鉴于此可以用杰斯的战略等解决列表,其中每个子列表包含字符串列表:

list2 = ' '.join([' '.join(strings) for strings in list1]).split() 

凡列表理解列表1转换为字符串列表:

>>> [' '.join(strings) for strings in list1] 
['I am a student', 'I come from China', 'I study computer science'] 

的加入则将会创建一个从字符串和分割字符串将建立一个关于空间的列表分裂。

如果子列表仅包含单串,可以简化列表理解:

list2 = ' '.join([l[0] for l in list1]).split() 
+0

不应该'for's在另外的顺序? (我觉得有悖常理了。) – jez

+0

@jez我相信它使用有机磷农药的原始数据是正确的。它只是在两个层面上扁平化清单。无论如何,这个问题被重新编写了,所以我编辑了答案。 – bohrax