2012-05-19 35 views
0

給定一個列表['a','b','c','d','e','f']。編號。的分割2 ..所以在第一個字符串我想要採取列表中的0,2,4個元素,然後連接它們用空格分隔符分隔1,3,5個元素的第二個字符串。 輸出需要的形式爲k = ["a c e", "b d f"]連接Python中任意數量的字符串項目

實際的程序是取一個字符串(例如{ball,bat,doll,choclate,bat,kite}),也取在輸入的數字接受這些禮物的孩子(例如2個),然後將他們分開,以便第一個孩子得到一份禮物,然後到達後面,第二個孩子拿走禮物,站在後面,這樣所有的孩子都會拿着禮物。如果禮物留那麼第一個孩子又需要一份禮物,循環下去....上面如 所需的輸出:{「球娃娃蝙蝠」,「蝙蝠choclate風箏」}

+1

清理第二款,更具體 – cobie

+0

你是什麼意思通過「列表中的字符串」? – yak

回答

6

這裏是爲任意數量的組這樣做的一般方法:

def merge(lst, ngroups): 
    return [' '.join(lst[start::ngroups]) for start in xrange(ngroups)] 

這裏是如何使用它:

>>> lst = ['a','b','c','d','e','f'] 
>>> merge(lst, 2) 
['a c e', 'b d f'] 

>>> merge(lst, 3) 
['a d', 'b e', 'c f'] 
+0

非常感謝你的一般化的答案..將是一個偉大的希爾:) –

+0

@FirstRock:這意味着你還沒有執行'def merge(lst,ngroups):...'阻止我的答案的頂部。 – NPE

+0

嘿..!得到了..它的工作令人驚歎..在轉到python之前,我嘗試用C和java編寫代碼,但連接和所有都變得太深了..在python簡潔和令人難以置信。我喜歡這個.. –

6
lst = ['a','b','c','d','e','f'] 

k = [" ".join(lst[::2]), " ".join(lst[1::2])] 

輸出:

['a c e', 'b d f'] 

更通用的解決方案:

def group(lst, n): 
    return [" ".join(lst[i::n]) for i in xrange(n)] 

lst = ['a','b','c','d','e','f'] 
print group(lst, 3) 

輸出:

['a d', 'b e', 'c f'] 
+0

一個字...優雅!! – cobie

+0

+1不確定第二段的含義,但到目前爲止是完美的。您應該按照PEP-8的規定將'l'更改爲'L'。 – jamylak

+0

我不喜歡變量的大寫字母,所以讓我們使用'lst'來代替... :) – mata