Python:将多个列表连接到一个句子

时间:2009-05-23 12:01:09

标签: python list join

你好,我有多个名单。例如:

[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 个答案:

答案 0 :(得分: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])

答案 1 :(得分:3)

要加入列表,请尝试模块itertools中的链函数,例如,您可以尝试

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))

答案 2 :(得分:1)

易:

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

答案 3 :(得分:0)

如果您将所有列表放在一个列表中,您可以这样做:

' '.join(e[0] for e in [[u'This/ABC'], [u'is/ABC']])