2013-07-16 78 views
8

假設後,我有這樣的名單:前加入字符串之間,並且

lis = ['a','b','c','d'] 

如果我做'x'.join(lis)結果是:

'axbxcxd' 

這將是一個乾淨,簡單的方法來得到這個輸出?

'xaxbxcxdx' 

我可以寫一個輔助函數:

def joiner(s, it): 
    return s+s.join(it)+s 

,並調用它像joiner('x',lis)返回xaxbxcxdx,但它看起來並不乾淨,因爲它可以。有沒有更好的方法來獲得這個結果?

+1

我想你是否在做's + s.join(it)+ s'或'join([''] + lis + [''])'並不重要。在任何情況下,由於'join'不能直接做你想做的事情,所以你必須在列表中添加和附加一些東西。 –

+0

@ Jan-PhilipGehrcke'[''] + lis - > new list','new list + [''] - > second new list',then'join'。我認爲,最好使用'itertools.chain' – akaRem

回答

14
>>> '{1}{0}{1}'.format(s.join(lis), s) 
'xaxbxcxdx' 
+1

那很美。 –

+1

認爲這是一樣好的 –

+1

我不會說這是*因此比其他答案好得多。 –

2

你也可以做到這一點作爲

'x'.join([''] + lis + ['']) 

但我不知道這是否是清潔的。

它只會在空列表上產生1個分隔符而不是2個作爲問題中的一個。

+0

想要這個的主要原因是沒有''x''亂丟三次。在我的應用程序中''x''是一個更長的字符串。這有助於,謝謝。 –

相關問題