合并多个列表

7 投票
4 回答
4828 浏览
提问于 2025-04-17 05:00

我该如何合并一个列表的列表呢?

[['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]

变成

['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']

如果我能在合并这些列表之前,在每个项目的开头和结尾添加一个值,比如像HTML标签那样,那就更好了。

也就是说,最后的结果会是:

['<tr>A</tr>', '<tr>B</tr>', '<tr>C</tr>', '<tr>D</tr>', '<tr>E</tr>', '<tr>F</tr>', '<tr>G</tr>', '<tr>H</tr>', '<tr>I</tr>']

4 个回答

4
import itertools

print [('<tr>%s</tr>' % x) for x in itertools.chain.from_iterable(l)]

你可以使用 sum 这个函数,但我觉得这样做有点不好,因为你需要传入一个空的参数([])。正如 Raymond 所说,这样做也会消耗很多资源。所以最好不要用 sum。

10

不要使用sum(),因为它在连接列表时速度很慢。

可以用一个嵌套列表推导式来解决这个问题:

>>> x = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]
>>> [elem for sublist in x for elem in sublist]
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']
>>> ['<tr>' + elem + '</tr>' for elem in _]

使用itertools.chain的建议也很好。

2

要把多个列表合并在一起,可以用 sum 这个方法。

values = sum([['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']], [])

如果想给这些列表里的内容加上HTML标签,可以用一种叫做列表推导式的写法。

html_values = ['<tr>' + i + '</tr>' for i in values]

撰写回答