Присоединение к последующим элементам списка - Python - PullRequest
1 голос
/ 20 июля 2011

Есть ли команда для объединения последующих элементов в списке - то есть в списке ['AA', 'BB', 'C', 'D'], как можно объединить первые два элемента (или любые другие, в зависимости отв коде) в списке, оставляя список как ['AABB', 'C', 'D']?Спасибо!

Ответы [ 3 ]

5 голосов
/ 20 июля 2011
>>> a = ['AA', 'BB', 'C', 'D']
>>> a[0:2] = [''.join(a[0:2])]
>>> a
['AABB', 'C', 'D']
2 голосов
/ 20 июля 2011

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

>>> a = ['AA', 'BB', 'C', 'D']
>>> a[0] += a.pop(1)

Если вы хотите получить новый и оставить initList как есть, вы можете использовать что-то вроде этого (обратите внимание, что этопросто образец):

a = ['AA', 'BB', 'C', 'D']
outList = a[:] # make a copy of list values
outList[0] += outputList.pop(1)

Или в некоторых случаях вы можете попробовать использовать что-то вроде этого:

from itertools import groupby

a = ['AA', 'BB', 'C', 'D']
res = [''.join((str(z) for z in y)) for x, y in groupby(a, key = lambda x: len(x) == 2)]
1 голос
/ 20 июля 2011

здесь представлено решение Python 3.x, которое использует итераторы и, следовательно, совместимо с любым объектом-генератором (например, range объект ...):

def merger(iterable, index=0, length=1):
    it = iter(iterable)
    for count in range(index):
        yield next(it)
    merged = next(it)
    for count in range(length-1):
        merged += next(it)
    yield merged
    for item in it:
        yield item
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...