将列表列表转换为字符串列表

时间:2016-12-05 22:05:50

标签: string list python-3.x

我有一个像这样的列表列表

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。

2 个答案:

答案 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()