2016-12-05 36 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