Python:将多个列表连接成一句话

3 投票
4 回答
6147 浏览
提问于 2025-04-15 11:47

你好,我有多个列表。例如:

[u'This/ABC']
[u'is/ABC']
[u'not/ABC']
[u'even/ABC']
[u'close/ABC']
[u'to/ABC']
[u'funny/ABC']
[u'./ABC']

[u'O/ABC']
[u'noez/ABC']
[u'!/ABC']

我需要把这个列表和

This/ABC is/ABC not/ABC even/ABC close/ABC to/ABC funny/ABC ./ABC

O/ABC noez/ABC !/ABC

合并在一起,请问我该怎么做呢?对了,中间要留个空格!

4 个回答

1

简单:

x = [[u'O/ABC'], [u'noez/ABC'], [u'!/ABC']] 
print ' '.join(y[0] for y in x)
3

要把多个列表合并在一起,可以试试itertools模块里的chain函数。例如,你可以这样做:

import itertools
print ' '.join(itertools.chain(mylist))

如果你想在两个列表之间加个空行,那就在第一个列表的末尾加上'\n'。

import itertools
a = [[u'This/ABZ'], [u'is/ABZ'], ....]
b = [[u'O/ABZ'], [u'O/noez'], ...]
a.append('\n')

print ' '.join(itertools.chain(a + b))
6

如果你把它们都放在一个列表里,比如这样:

a = [
    [u'This/ABC'],
    [u'is/ABC'],
    ...
]

你可以通过把所有列表加在一起,然后对结果使用普通的连接方法来得到你的结果:

result = ' '.join(sum(a, []))

在我多次重新阅读这个问题后,我想你可能也想要那个空行。这其实也是类似的做法。你只需要加上:

b = [
    [u'O/ABC'],
    [u'HAI/ABC'],
    ...
]

lines = [a, b]

result = '\n\n'.join([' '.join(sum(line, [])) for line in lines])

撰写回答