2013-07-16 17 views
8

varsayalım sonra bu liste var: Ben 'x'.join(lis) yaparsanızarasında, daha önce dize katılın ve

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

sonucudur:

'axbxcxd' 

bu almak için temiz, basit bir yol ne olurdu çıktı?

'xaxbxcxdx' 

Bir yardımcı fonksiyon yazabiliriz:

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

ve xaxbxcxdx döndürür joiner('x',lis) gibi diyoruz, ama buna gerektiği kadar temiz görünmüyor. Bu sonucu elde etmenin daha iyi bir yolu var mı?

+1

Sana 's + s.join (it) S'ye veya' katılmak + yapıyoruz ([ ''] + lis + [ '']) 'gerçekten önemli değil ister düşünüyorum. Her durumda, 'katıl' doğrudan istediğinizi yapamadığı için listeye bir şey eklemeniz ve eklemeniz gerekir. –

+0

@ Jan-PhilipGehrcke [''] + lis -> yeni liste ', yeni liste + [' '] -> ikinci yeni liste', sonra 'katıl'. Sanırım, "itertools.chain" işlevini kullanmak daha iyidir – akaRem

cevap

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

Bu çok güzel. –

+1

Bu, –

+1

'u aldığına göre bu kadar iyi olduğunu düşünün Diğer bir cevaptan çok daha iyi olduğunu söyleyemem. –

2

Ayrıca

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

olarak yapabilir Ama daha temiz olmadığından emin değilim.

Soru listesinde 2 yerine boş bir listede sadece 1 ayırıcı üretecektir.

+0

Bunun için ana neden üç kez "x" lere sahip olmamaktır. '' x '' uygulamasında biraz daha uzun bir dizedir. Bu yardımcı olur, teşekkürler. –

İlgili konular