जवाबों:
पायथन 2 में:
mylist = ['x', 3, 'b']
print '[%s]' % ', '.join(map(str, mylist))
पायथन 3 में (जहां printएक बिलियन फ़ंक्शन है और अब कोई सिंटैक्स सुविधा नहीं है):
mylist = ['x', 3, 'b']
print('[%s]' % ', '.join(map(str, mylist)))
दोनों वापस:
[x, 3, b]
यह mylist केmap() प्रत्येक तत्व के लिए str को कॉल करने के लिए फंक्शन का उपयोग कर रहा है, इसके बाद एक स्ट्रिंग में शामिल होने वाले स्ट्रिंग्स की एक नई सूची बनाता हैstr.join() । फिर, %स्ट्रिंग स्वरूपण ऑपरेटर स्ट्रिंग को इसके स्थान पर प्रतिस्थापित करता %sहै "[%s]"।
mapको कॉल करने के लिए फ़ंक्शन का उपयोग कर रहा strहै mylist, स्ट्रिंग की एक नई सूची बनाता है जिसे वह फिर एक स्ट्रिंग में शामिल करता है str.join। फिर, वह उपयोग करता %स्ट्रिंग ऑपरेटर स्वरूपण के बजाय स्ट्रिंग स्थानापन्न करने %sमें "[%s]"।
"[{0}]".format(", ".join(str(i) for i in mylist))
map(f, xs)(या imappython2.x पर) (f(x) for x in xs), जब fएक पूर्वनिर्धारित कॉल करने योग्य है; यह कम बाइटकोड को निष्पादित करता है, और आमतौर पर अधिक कॉम्पैक्ट होता है। निश्चित रूप से न map(lambda x:..., xs) thats से भी बदतर(... for x in xs)
यह सरल कोड है, इसलिए यदि आप नए हैं तो आपको इसे आसानी से समझ लेना चाहिए।
mylist = ["x", 3, "b"]
for items in mylist:
print(items)
यह उन सभी को बिना उद्धरण के प्रिंट करता है, जैसे आप चाहते थे।
उपयोग करने के बजाय map, मैं joinएक इट्रेटर को स्वीकार करने की क्षमता के साथ एक जनरेटर अभिव्यक्ति का उपयोग करने की सलाह दूंगा:
def get_nice_string(list_or_iterator):
return "[" + ", ".join( str(x) for x in list_or_iterator) + "]"
यहाँ, joinस्ट्रिंग कक्षा का एक सदस्य कार्य है str। यह एक तर्क लेता है: स्ट्रिंग की एक सूची (या पुनरावृत्ति), फिर इस मामले में, द्वारा अवगत सभी तत्वों के साथ एक नया स्ट्रिंग लौटाता है ,।
", ".join( str(x) for x in list_or_iterator).join('[]')
आप एक स्ट्रिंग इसके उपयोग करने से सभी अवांछित पात्रों को हटा सकते हैं translate()विधि के साथ Noneके लिए tableतर्क एक स्ट्रिंग चरित्र (रों) युक्त आप अपने लिए निकालना चाहते हैं, जिसके बाद deletecharsतर्क।
lst = ['x', 3, 'b']
print str(lst).translate(None, "'")
# [x, 3, b]
यदि आप 2.6 से पहले पायथन के संस्करण का उपयोग कर रहे हैं, तो आपको इसके बजाय stringमॉड्यूल के translate()फ़ंक्शन का उपयोग करने की आवश्यकता होगी, क्योंकि तर्क के Noneरूप में पास करने की क्षमता tableपायथन 2.6 तक जोड़ी नहीं गई थी। इसका उपयोग इस तरह दिखता है:
import string
print string.translate(str(lst), None, "'")
string.translate()फ़ंक्शन का उपयोग करना 2.6+ में भी काम करेगा, इसलिए इसका उपयोग करना बेहतर हो सकता है।
lst = ["it isn't", 3, 'b']==> ["it isnt", 3, b]और साथ मेंlst = ['it isn\'t', 3, 'b']
यहाँ @ TokenMacGuy के वन-लाइनर में कुछ चरणों को दर्शाने वाला एक इंटरैक्टिव सत्र है। पहले वह mapसूची में प्रत्येक आइटम को स्ट्रिंग में बदलने के लिए फ़ंक्शन का उपयोग करता है (वास्तव में, वह एक नई सूची बना रहा है, पुरानी सूची में आइटम को परिवर्तित नहीं कर रहा है)। फिर वह joinउन ', 'दोनों के साथ तार जोड़ने के लिए स्ट्रिंग विधि का उपयोग कर रहा है। बाकी बस स्ट्रिंग स्वरूपण है, जो बहुत सीधा है। (संपादित करें: यह उदाहरण सीधा है; सामान्य रूप में स्ट्रिंग स्वरूपण कुछ जटिल हो सकता है।)
ध्यान दें कि joinकई सबस्ट्रिंग से एक स्ट्रिंग बनाने का एक सरल और कुशल तरीका है, इसे स्ट्रिंग्स में क्रमिक रूप से जोड़कर करने की तुलना में बहुत अधिक कुशल है, जिसमें दृश्यों के पीछे बहुत सारी नकल शामिल है।
>>> mylist = ['x', 3, 'b']
>>> m = map(str, mylist)
>>> m
['x', '3', 'b']
>>> j = ', '.join(m)
>>> j
'x, 3, b'
.formatस्ट्रिंग स्वरूपण के लिए उपयोग करना ,
mylist = ['x', 3, 'b']
print("[{0}]".format(', '.join(map(str, mylist))))
आउटपुट:
[x, 3, b]
स्पष्टीकरण:
mapstringटाइप करने के लिए सूची के प्रत्येक तत्व को मैप करने के लिए उपयोग किया जाता है ।,को विभाजक के रूप में एक स्ट्रिंग में एक साथ जोड़ा जाता है ।[और ]प्रिंट बयान में सूची ब्रेसिज़ दिखाने के लिए।.formatसबसे अधिक पायथोनिक तरीके का उपयोग कर पाता हूं । लेकिन, निश्चित रूप से, मैं असहमतियों को स्वीकार करता हूं। ;)
मुझे @AniMenon ने एक और अधिक सामान्य समाधान लिखने के लिए प्रेरित किया।
mylist = ['x', 3, 'b']
print('[{}]'.format(', '.join(map('{}'.format, mylist))))
यह केवल formatविधि का उपयोग करता है । का कोई निशान नहीं है str, और यह तत्व प्रारूप के ठीक ट्यूनिंग के लिए अनुमति देता है। उदाहरण के लिए, यदि आपके पास सूची के तत्वों के रूप में फ्लोट संख्याएं हैं, तो आप इस मामले में एक रूपांतरण विनिर्देशक जोड़कर, उनके प्रारूप को समायोजित कर सकते हैं।:.2f
mylist = [1.8493849, -6.329323, 4000.21222111]
print("[{}]".format(', '.join(map('{:.2f}'.format, mylist))))
आउटपुट काफी सभ्य है:
[1.85, -6.33, 4000.21]
print(["Sam"])कॉलrepr("Sam"), जो रिटर्न'Sam'(उद्धरण के साथ), के विपरीत जब आप कॉलprint("Sam")और अजगर कॉलstr("Sam")जो रिटर्नSam(उद्धरण के बिना)। देखें बीच का अंतरstrऔरreprया अजगरstrऔरlistरों अधिक जानकारी के लिए।