2011-07-20 121 views
1

是否有命令合并列表中的后续元素 - 即列表['AA','BB','C','D']如何合并前两个元素(或任何其他人,取决于代码),留下一个列表,如['AABB','C','D']?谢谢!加入后续列表元素 - 蟒蛇

回答

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

一个[0] + = a.pop(1) – agf

+0

@agf肯定thanx))) –

+0

'outlist = a [:]',然后'outlist [0] + = outlist.pop(1)'更好。 – agf

1

这里是一个PYT其使用迭代器,因此汉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 
5
>>> a = ['AA', 'BB', 'C', 'D'] 
>>> a[0:2] = [''.join(a[0:2])] 
>>> a 
['AABB', 'C', 'D'] 
+0

只适用于字符串,切片分配是一个很好的技巧。 – agf

+0

谢谢,这是一个很好的方式来做到这一点。我认为在我的情况下,我会首先尝试@ Artsiom的方式,但欣赏努力! – bac