2013-05-13 21 views
6

मेरी एक सूची है जैसे l=['a', 'b', 'c'] मुझे एक स्ट्रिंग जैसे 'abc' चाहिए। तो वास्तव में परिणाम l[0]+l[1]+l[2] है, जो भीसूची के तत्वों को सम्मिलित करें

s = '' 
for i in l: 
    s += i 

रूप writte जा सकती है कि इस अधिक सुंदर ढंग से करने के लिए कोई तरीका है?

उत्तर

15

उपयोग str.join():

s = ''.join(l) 

स्ट्रिंग जिस पर आप इस फोन l में तार के बीच परिसीमक के रूप में प्रयोग किया जाता है: ज्यादा अपने तत्वों को श्रृंखलाबद्ध की तुलना में तेजी है

>>> l=['a', 'b', 'c'] 
>>> ''.join(l) 
'abc' 
>>> '-'.join(l) 
'a-b-c' 
>>> ' - spam ham and eggs - '.join(l) 
'a - spam ham and eggs - b - spam ham and eggs - c' 

str.join() का उपयोग करना एक करके एक, क्योंकि प्रत्येक संयोजन के लिए एक नई स्ट्रिंग ऑब्जेक्ट बनाना है। str.join() को केवल एक नई स्ट्रिंग ऑब्जेक्ट बनाना है।

ध्यान दें कि str.join() इनपुट अनुक्रम दो बार पर लूप होगा। एक बार गणना करने के लिए कि आउटपुट स्ट्रिंग कितनी बड़ी होनी चाहिए, और एक बार फिर इसे बनाने के लिए। एक पक्ष प्रभाव के रूप में, कि इसका मतलब है कि एक जनरेटर अभिव्यक्ति के बजाय एक सूची समझ का उपयोग करते हुए तेजी से होता है:

slower_gen_expr = ' - '.join('{}: {}'.format(key, value) for key, value in some_dict) 
faster_list_comp = ' - '.join(['{}: {}'.format(key, value) for key, value in some_dict]) 
+2

+1 क्यू/ए 25s सुंदर मैच के लिए कड़ी मेहनत की भरपाई ...... –

+3

निंजा फिर से हमलों । –

+0

एक अच्छा लिंक: http://stackoverflow.com/questions/3055477/how-slow-is-pythons-string-concatenation-vs-str-join मुझे यह पसंद है कि यह उत्तर वास्तव में मूल प्रश्न के लिए कितना विस्तृत है – jamylak

संबंधित मुद्दे