2012-09-17 16 views
221

क्या स्ट्रिंग आइटम्स को एक स्ट्रिंग में सूचीबद्ध करने का एक आसान तरीका है?तारों की सूची में आइटम को

क्या मैं सूची में आइटमों में शामिल होने के लिए str.join() फ़ंक्शन का उपयोग कर सकता हूं?

उदा। इस इनपुट ['this','is','a','sentence'] है और यह वांछित आउटपुट this-is-a-sentence

sentence = ['this','is','a','sentence'] 
sent_str = "" 
for i in sentence: 
    sent_str += str(i) + "-" 
sent_str = sent_str[:-1] 
print sent_str 
+9

' '-'। '-' बाईं चाहिए पर हो ?? (वाक्य) में शामिल होने के' – aland

उत्तर

461

उपयोग join है:

>>> sentence = ['this','is','a','sentence'] 
>>> '-'.join(sentence) 
'this-is-a-sentence' 
+7

समझ में नहीं आता था, क्या –

+4

@LawrenceDeSouza वह स्ट्रिंग जो आप शामिल होना चाहते हैं; [दस्तावेज़ीकरण] देखें (https://docs.python.org/2/library/stdtypes.html#string-methods), या [यह उत्तर] (http://stackoverflow.com/questions/1876191/explain-python -जॉइन) जो थोड़ा और विस्तार में जाता है। –

+1

मुझे अपेक्षित 'वाक्य.जॉइन (" ") 'काम करने की उम्मीद है, क्योंकि रिवर्स ऑपरेशन' list.split ("") 'है। कोई विचार अगर यह सूची के लिए पायथन के तरीकों में जोड़ा जा रहा है? –

7

हालांकि @Burhan Khalid's answer अच्छा है, मुझे लगता है कि इस तरह के और अधिक समझ में आता है:

from str import join 

sentence = ['this','is','a','sentence'] 

join(sentence, "-") 

जुड़ने के लिए दूसरा तर्क() वैकल्पिक है और "" के लिए डिफ़ॉल्ट है।

संपादित करें: इस समारोह अजगर में 3

+6

[यह फ़ंक्शन 2.x में बहिष्कृत है और 3.x में हटाया जा रहा है] (https://docs.python.org/2/library/string.html#deprecated-string-functions) यह मामला है , मैं इसे प्रदान किए गए दूसरे उत्तर पर इसका उपयोग करने की अनुशंसा नहीं करता। –

+0

@ माथेव ग्रीन इस जवाब और बुरहान खालिद का उत्तर एक ही कार्य को विभिन्न तरीकों से उपयोग करता है, इसलिए उसका जवाब भी बहिष्कृत किया गया है। लेकिन यह इंगित करने के लिए धन्यवाद कि गेटा ने 3.x में कैसे शामिल होना है। लेकिन अगर आप 2.x का उपयोग कर रहे हैं, तो यह दूर नहीं जा रहा है। – SilentVoid

+1

हालांकि उसे बहिष्कृत नहीं किया गया है।आपकी सिफारिश लिब/string.py से एक फ़ंक्शन का उपयोग करती है जो पूरी तरह से अलग है _and_ बहिष्कृत है जबकि @ बुरहान खालिद उत्तर अंतर्निहित स्ट्रिंग विधि का उपयोग करता है जिसे बहिष्कृत नहीं किया जाता है। उनका जवाब अब सबसे सही है और आगे बढ़ रहा है जबकि यह अब 2.x पर अच्छा है। –

57

एक और अधिक सामान्य तरीके से तार करने के लिए अजगर सूचियों कन्वर्ट करने के लिए किया जाएगा हटा दिया गया था:

>>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
>>> my_lst_str = ''.join(map(str, my_lst)) 
>>> print(my_lst_str) 
'12345678910' 
+1

इनपुट स्ट्रिंग होने पर सूची समझ आवश्यक क्यों है? 'नक्शा (str, my_lst)' सूची की गणना किए बिना पर्याप्त होगा =) – alvas

+4

इस प्रश्न के अधिकांश उत्तर इस मामले पर विचार कर रहे हैं जब सूची में स्ट्रिंग है। माइन सूचियों को तारों में बदलने का एक सामान्य तरीका है। मेरे उदाहरण में, सूची 'int' प्रकार है लेकिन यह किसी भी प्रकार का हो सकता है जिसे स्ट्रिंग के रूप में प्रदर्शित किया जा सकता है। –

+0

@alvas धन्यवाद, मेरा जवाब अपडेट किया गया। –

15

यह बहुत उपयोगी है शुरुआती पता करने के लिए के लिए why join is a string method

शुरुआत में यह बहुत अजीब है, लेकिन इसके बाद बहुत उपयोगी है।

का परिणाम में शामिल होने के लिए हमेशा एक स्ट्रिंग है, लेकिन वस्तु कई प्रकार (जेनरेटर, सूची, tuples, आदि)

.join तेजी से होता है, क्योंकि यह केवल एक बार स्मृति आवंटित की हो सकती है शामिल हो सकते हैं। शास्त्रीय concatenation से बेहतर है। extended explanation

एक बार जब आप इसे सीख लेंगे, तो यह बहुत ही आरामदायक है और आप इस तरह की चालें कोष्ठक जोड़ने के लिए कर सकते हैं।

>>> ",".join("12345").join(("(",")")) 
    '(1,2,3,4,5)' 

    >>> lista=["(",")"] 
    >>> ",".join("12345").join(lista) 
    '(1,2,3,4,5)' 
+0

वापस आ जाएगा, कूल। मेरा अपवित्र है :) – Blacksilver

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