列表中的列表转换为一个列表?

时间:2014-08-01 21:39:30

标签: python list

我有这个清单:

list1 = [['a', 'b', 'c', 'd']]

我发现转换为一个列表的方式:

list1 = [['a', 'b', 'c', 'd']]

result = []
for i in range(len(list1)):
    for j in range(len(list1[i])):
        result.append(list1[i][j])

print result

结果是:

['a', 'b', 'c', 'd']

还有其他办法吗?

4 个答案:

答案 0 :(得分:3)

如果你只有一个项目,显然list1[0]会起作用。

否则在一般情况下存在类似的问题,例如Making a flat list out of list of lists in Python

这包括几个包括

sum(list1, [])

答案 1 :(得分:2)

只需将列表编入0

的索引
result = list1[0]

演示:

>>> list1 = [['a', 'b', 'c', 'd']]
>>> result = list1[0]
>>> result
['a', 'b', 'c', 'd']
>>>

对于多个子列表,您可以使用itertools.chain.from_iterable

>>> from itertools import chain
>>> list1 = [['a', 'b', 'c', 'd'], ['w', 'x', 'y', 'z']]
>>> list(chain.from_iterable(list1))
['a', 'b', 'c', 'd', 'w', 'x', 'y', 'z']
>>>

答案 2 :(得分:1)

如果您有多个列表,可以直接将列表连接在一起:

list1 = [['a', 'b', 'c', 'd'], ['e', 'f', 'g', 'h']]

result = []
for sublist in list1:
    result += sublist

print result

如果它只是一个嵌套列表,iCodez的答案会更快。

答案 3 :(得分:1)

您可以这样做或使用列表理解。两者都做同样的事情,但这更像是python的风格,看起来更漂亮(适用于列表列表),它也被称为展平列表:

result = [item for sublist in l for item in sublist]

这将转为

[[1,2],[3,4]]

[1,2,3,4]

[[1,2,3,4]]

[1,2,3,4]