2011-07-20 178 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