我有一个像这样的列表列表
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
如何提取list1子列表中的每个单词并将其转换为字符串列表?我在Windows 7中使用python 3。
答案 0 :(得分: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']
答案 1 :(得分:0)
给定一个列表,其中每个子列表包含字符串,这可以使用jez的策略来解决,如:
list2 = ' '.join([' '.join(strings) for strings in list1]).split()
列表推导将list1转换为字符串列表:
>>> [' '.join(strings) for strings in list1]
['I am a student', 'I come from China', 'I study computer science']
然后,连接将从字符串创建一个字符串,split将在空格上创建一个列表。
如果子列表只包含单个字符串,则可以简化列表理解:
list2 = ' '.join([l[0] for l in list1]).split()