加入后续列表元素 - Python

时间:2011-07-20 13:24:34

标签: python merge

是否有命令合并列表中的后续元素 - 即在列表中['AA','BB','C','D']如何合并前两个元素(或任何其他元素,具体取决于列表中的代码),留下像''AABB','C','D'这样的列表?谢谢!

3 个答案:

答案 0 :(得分:5)

>>> a = ['AA', 'BB', 'C', 'D']
>>> a[0:2] = [''.join(a[0:2])]
>>> a
['AABB', 'C', 'D']

答案 1 :(得分:2)

如果您不关心初始列表,可以尝试以下操作:

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

答案 2 :(得分:1)

这是一个使用迭代器的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