将嵌套列表字符串连接到字符串列表时出错

时间:2014-11-13 09:05:23

标签: python list concatenation

我有一个嵌套列表包含字符串示例

[['abc','abc df','pqr'],['xyz','efg']]

我想将这个嵌套列表连接成一个字符串列表,例如

['abc','abc df','pqr','xyz','efg']
像那样。我使用代码

all_tokens = sum(text, [])

但它给我带来了错误说

can only concatenate list (not "str") to list

为什么会这样发生?如何修复错误?还有哪些方法可以完成同样的任务?

修改

我知道迭代for循环可以管理同样的事情。但我正在寻找一种快速的方法

3 个答案:

答案 0 :(得分:3)

您可以使用reduce,它会浏览列表并将它们连接起来。

l=[['abc','abc df','pqr'],['xyz','efg']]
print reduce(lambda x,y:x+y,l)

<强>输出:

['abc', 'abc df', 'pqr', 'xyz', 'efg']

您也可以在List comprehension中使用嵌套循环

print [item for subL in l for item in subL]

您可以使用sum()

对列表求和
print sum(l, [])

您也可以使用itertools.chain()

from itertools import chain
print list(chain(*l))

它会得到相同的结果。

答案 1 :(得分:2)

一些示例代码可能会很好,但我假设您有一个列表,您希望将它们“连接”到一个列表中。以下是如何做到的:

a = [['abc','abc df','pqr'],['xyz','efg']]
b = []
for element in a:
    b.extend(element)

它不会检查重复元素。为此,您可以使用set确保每个元素只出现一次:

mylist = list(set(b))

答案 2 :(得分:1)

像这样使用itertools.chain:

from itertools import chain
x = chain.from_iterable([['abc','abc df','pqr'],['xyz','efg']])
# you can also make a list out of it, if you need to
x = list(x)
相关问题