Python: объединение нескольких списков в одно предложение - PullRequest
3 голосов
/ 23 мая 2009

Привет, у меня есть несколько списков. Например:

[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 ]

6 голосов
/ 23 мая 2009

Если вы поместите их все в список, например, так:

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])
3 голосов
/ 23 мая 2009

Чтобы объединить списки, попробуйте функцию цепочки в модуле 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))
1 голос
/ 23 мая 2009

Легко:

x = [[u'O/ABC'], [u'noez/ABC'], [u'!/ABC']] 
print ' '.join(y[0] for y in x)
0 голосов
/ 23 мая 2009

Если вы поместите все свои списки в один список, вы можете сделать это следующим образом:

' '.join(e[0] for e in [[u'This/ABC'], [u'is/ABC']])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...