合并多个列表
我该如何合并一个列表的列表呢?
[['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]