如何将列表的列表列表转换为列表列表?

时间:2017-04-17 21:16:28

标签: python

我是编程新手,我需要一些帮助。 我有一个这样的列表

a=[[('the', 'b'), ('hotel', 'i')],[('the', 'b'), ('staff', 'i')]]

我试图在保留列表中的数据的同时摆脱元组,结果看起来应该是这样的

output=[['the', 'b', 'hotel', 'i'],['the', 'b', 'staff', 'i']]

非常感谢

4 个答案:

答案 0 :(得分:1)

您可以执行以下列表理解:

>>> [[y for x in i for y in x] for i in a]
[['the', 'b', 'hotel', 'i'], ['the', 'b', 'staff', 'i']]

请注意,这与元组无关,因为鸭子类型的处理方式与列表解析中的列表完全相同。您基本上是在Making a flat list out of list of lists in Python中对多个列表项执行操作。

答案 1 :(得分:1)

这可以通过sum功能完成:

a=[[('the', 'b'), ('hotel', 'i')],[('the', 'b'), ('staff', 'i')]]
output = [sum(elem, ()) for elem in a]
print(output)

如果必须返回一个列表:

a=[[('the', 'b'), ('hotel', 'i')],[('the', 'b'), ('staff', 'i')]]
output = [sum(map(list,elem), []) for elem in a]
print(output)

答案 2 :(得分:1)

我想你可以使用:

output = []
for x in a:
    output.append([element for tupl in x for element in tupl])

输出:

[['the', 'b', 'hotel', 'i'], ['the', 'b', 'staff', 'i']]

答案 3 :(得分:1)

这是@nfn neil的A"功能"风格的变体。

from itertools import repeat

list(map(list, map(sum, a, repeat(()))))
# -> [['the', 'b', 'hotel', 'i'], ['the', 'b', 'staff', 'i']]