तार को सूची में सम्‍मिलित करें


574

क्या एक सूची में स्ट्रिंग आइटम्स को एक स्ट्रिंग में बदलने का एक सरल तरीका है? क्या मैं 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

24
'-'.join(sentence)
अलंड

जवाबों:


1050

उपयोग करें join:

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

13
समझ में नहीं आया, बाईं ओर '-' क्या माना जाता है ??
लॉरेंस डेसूज़ा

5
@LawrenceDeSouza आप जिस स्ट्रिंग में शामिल होना चाहते हैं; प्रलेखन देखें , या यह उत्तर जो थोड़ा और अधिक विस्तार में जाता है।
बुरहान खालिद

9
मैं इस तरह के sentence.join(" ")रूप में अच्छी तरह से काम करने की उम्मीद कर रहा हूं , क्योंकि रिवर्स ऑपरेशन है list.split(" ")। किसी भी विचार अगर यह सूचियों के लिए पायथन के तरीकों में जोड़ा जा रहा है?
राउटर थिएलेन

10
@ राउटर, यह नहीं होगा। एक तरफ, केवल तारों की सूची में शामिल हो सकते हैं; इसलिए list.joinमनमानी सूची के लिए यह अनुचित होगा। दूसरे पर, str.joinकिसी भी सूची का नहीं, बल्कि तार का कोई "चलने योग्य" क्रम हो सकता है। केवल एक चीज जो समझ में आएगी वह एक अंतर्निहित कार्य है join(list, sep); stringयदि आप वास्तव में चाहते हैं तो (मूल रूप से अप्रचलित) मॉड्यूल में से एक है।
एलेक्सिस

4
@ लियो' '.join(['this', 'is', 'a', 'sentence'])
बुरहान खालिद

120

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

>>> 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'

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

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

3
इसे जोड़ने के लिए, लैम्बडा फ़ंक्शन के साथ उपयोग किए जाने पर नक्शा भी उपयोगी होगा। उदाहरण के लिए ' '.join(map(lambda x: ' $'+ str(x), my_lst))वापसी होगी'$1 $2 $3 $4 $5 $6 $7 $8 $9 $10'
ScottMcC

3
नक्शा जोड़ना वास्तव में स्ट्रिंग के अलावा डेटाटाइप्स के साथ मदद करता है। महान!
Appleboy

39

शुरुआती लोगों के लिए यह जानना बहुत उपयोगी है कि क्यों एक स्ट्रिंग विधि है

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

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

.joinतेज है क्योंकि यह केवल एक बार मेमोरी आवंटित करता है। शास्त्रीय संयोजन से बेहतर (देखें, विस्तारित विवरण )।

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

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

>>> list = ["(",")"]
>>> ",".join("12345").join(list)
Out:
'(1,2,3,4,5)'

12

हालाँकि @Burhan खालिद का जवाब अच्छा है, मुझे लगता है कि यह इस तरह से अधिक समझ में आता है:

from str import join

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

join(sentence, "-") 

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

EDIT: पायथन 3 में इस फ़ंक्शन को हटा दिया गया था


14
यह फ़ंक्शन 2.x में निकाला जाता है और 3.x में निकाला जाता है। यह मामला होने के नाते, मैं प्रदान किए गए अन्य उत्तर पर इसका उपयोग करने की सलाह नहीं दूंगा।
मैथ्यू ग्रीन

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

1
हालांकि उनका पदावनत नहीं किया गया है। आपकी अनुशंसा लिब / स्ट्रिंग एरो से एक फ़ंक्शन का उपयोग करती है जो पूरी तरह से अलग और पदावनत है जबकि @BurhanKhalid उत्तर अंतर्निहित स्ट्रिंग विधि का उपयोग करता है जो कि पदावनत नहीं है। उसका उत्तर अब सबसे सही है और आगे जा रहा है जबकि यह केवल 2.x पर अब के लिए अच्छा है।
मैथ्यू ग्रीन

यह कहने के लिए कि यदि आप इस विकल्प को बढ़ावा देना चाहते हैं, तो आपको एक चेतावनी भी शामिल करनी चाहिए कि यह मेरी पिछली टिप्पणियों में उल्लिखित कारणों के लिए अनुशंसित नहीं है।
मैथ्यू ग्रीन

2

हम यह निर्दिष्ट कर सकते हैं कि हमें स्ट्रिंग में कैसे शामिल होना है। '-' के बजाय, हम '' का उपयोग कर सकते हैं

sentence = ['this','is','a','sentence']
s=(" ".join(sentence))
print(s)

2

हम पायथन के कम फ़ंक्शन का भी उपयोग कर सकते हैं :

from functools import reduce

sentence = ['this','is','a','sentence']
out_str = str(reduce(lambda x,y: x+"-"+y, sentence))
print(out_str)

4
बहुत अधिक-अनावश्यक जटिलता, सिर्फ उपयोग क्यों नहीं join?
सेबेस्टियन पाल्मा

-1
def eggs(someParameter):
    del spam[3]
    someParameter.insert(3, ' and cats.')


spam = ['apples', 'bananas', 'tofu', 'cats']
eggs(spam)
spam =(','.join(spam))
print(spam)

2
हालांकि यह कोड स्निपेट समाधान हो सकता है, स्पष्टीकरण सहित वास्तव में आपके पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और उन लोगों को आपके कोड सुझाव के कारणों का पता नहीं चल सकता है।
alan.elkin
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.