我有一个嵌套列表包含字符串示例
[['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循环可以管理同样的事情。但我正在寻找一种快速的方法
答案 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)