पायथन में स्ट्रिंग के रूप में विभिन्न प्रकारों के साथ वस्तुओं की सूची में शामिल हों


292

मुझे वस्तुओं की सूची में शामिल होने की आवश्यकता है। सूची में कई आइटम एक फ़ंक्शन से लौटे पूर्णांक मान हैं; अर्थात,

myList.append(munfunc()) 

सूची में शामिल होने के लिए मुझे लौटे परिणाम को स्ट्रिंग में कैसे बदलना चाहिए?

क्या मुझे प्रत्येक पूर्णांक मान के लिए निम्न करने की आवश्यकता है:

myList.append(str(myfunc()))

क्या कास्टिंग समस्याओं को हल करने के लिए एक अधिक पायथोनिक तरीका है?


3
कृपया, सुनिश्चित करें कि आप अच्छे व्याकरण का उपयोग करते हैं ताकि लोग यह समझ सकें कि आप क्या पूछ रहे हैं और पोस्ट करने से पहले अपना प्रश्न पुनः पढ़ लें।
allyourcode

जवाबों:


537

कॉलिंग str(...)कुछ को स्ट्रिंग में बदलने के लिए पायथोनिक तरीका है।

आप विचार करना चाह सकते हैं कि आप तार की सूची क्यों चाहते हैं। इसके बजाय आप इसे पूर्णांक की एक सूची के रूप में रख सकते हैं और जब आप उन्हें प्रदर्शित करने की आवश्यकता होती है तो पूर्णांकों को तार में परिवर्तित कर सकते हैं। उदाहरण के लिए, यदि आपके पास पूर्णांकों की सूची है, तो आप उन्हें एक-एक करके फॉर-लूप में बदल सकते हैं और उनके साथ जुड़ सकते हैं ,:

print(','.join(str(x) for x in list_of_ints))

175

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

', '.join(map(str, myList))

36
संभवत: अंग्रेजी उनकी मूल भाषा नहीं है। आप उन वस्तुओं की सूची में शामिल होने की उनकी इच्छा के बारे में निश्चित नहीं हैं जिनमें से वह कई में परिवर्तित हो रही हैं str? कृपया इस संभावना पर विचार करें कि आपको अपने पार्सर में कुछ फजी लॉजिक जोड़ने की जरूरत है ;-)
जॉन माकिन

3
@ मुझे इस पर विचार है, लेकिन अगर वह अंग्रेजी में अच्छा है, तो मैं उसे धीरे से अंग्रेजी के स्तर को अपने सामान्य स्तर तक लाने के लिए धक्का देना चाहता था। मैं अपने जवाब विभिन्न व्याख्याएं और स्थितियों वह में हो सकता है का मनोरंजन करता है लगता है।
allyourcode

41

अजगर में मानचित्र फ़ंक्शन का उपयोग किया जा सकता है। यह दो तर्क लेता है। पहला तर्क वह फ़ंक्शन है जिसका उपयोग सूची के प्रत्येक तत्व के लिए किया जाना है। दूसरा तर्क चलने योग्य है

a = [1, 2, 3]   
map(str, a)  
['1', '2', '3']

सूची को स्ट्रिंग में परिवर्तित करने के बाद आप सूची में एक स्ट्रिंग में संयोजन करने के लिए सरल जॉइन फ़ंक्शन का उपयोग कर सकते हैं

a = map(str, a)    
''.join(a)      
'123'

10
a=[1,2,3]
b=[str(x) for x in a]
print b

उपरोक्त विधि स्ट्रिंग में सूची में परिवर्तित करने का सबसे आसान और सबसे सामान्य तरीका है। एक और संक्षिप्त विधि है-

a=[1,2,3]
b=map(str,a)
print b

4

ऐसा करने के तीन तरीके हैं।

मान लीजिए कि आपको किलों की एक सूची मिल गई है

my_list = [100,200,300]
  1. "-".join(str(n) for n in my_list)
  2. "-".join([str(n) for n in my_list])
  3. "-".join(map(str, my_list))

हालाँकि जैसा कि https://docs.python.org/2/library/timeit.html पर पायथन वेबसाइट पर समयसीमा के उदाहरण में बताया गया है कि मैप का उपयोग करना तेज है। तो मैं आपको उपयोग करने की सलाह दूंगा"-".join(map(str, my_list))


2

आपकी समस्या बल्कि स्पष्ट है। शायद आप किसी अन्य सूची के सभी तत्वों को मौजूदा सूची में जोड़ने के लिए विस्तार की तलाश कर रहे हैं:

>>> x = [1,2]
>>> x.extend([3,4,5])
>>> x
[1, 2, 3, 4, 5]

यदि आप पूर्णांक को स्ट्रिंग्स में बदलना चाहते हैं, तो str () या स्ट्रिंग इंटरपोलेशन का उपयोग करें, संभवतः एक सूची समझ के साथ संयुक्त है, अर्थात

>>> x = ['1', '2']
>>> x.extend([str(i) for i in range(3, 6)])
>>> x
['1', '2', '3', '4', '5']

यह सब pythonic माना जाता है (ठीक है, एक जनरेटर अभिव्यक्ति और भी अधिक pythonic है लेकिन चलो सरल रहें और इस विषय पर)


2

उदाहरण के लिए:

lst_points = [[313, 262, 470, 482], [551, 254, 697, 449]]

lst_s_points = [" ".join(map(str, lst)) for lst in lst_points]
print lst_s_points
# ['313 262 470 482', '551 254 697 449']

मेरे अनुसार, मैं strप्रत्येक स्ट्रिंग सूची से पहले जोड़ना चाहता हूं :

# here o means class, other four points means coordinate
print ['0 ' + " ".join(map(str, lst)) for lst in lst_points]
# ['0 313 262 470 482', '0 551 254 697 449']

या एकल सूची:

lst = [313, 262, 470, 482]
lst_str = [str(i) for i in lst]
print lst_str, ", ".join(lst_str)
# ['313', '262', '470', '482'], 313, 262, 470, 482

lst_str = map(str, lst)
print lst_str, ", ".join(lst_str)
# ['313', '262', '470', '482'], 313, 262, 470, 482

1

शायद आपको स्ट्रिंग्स के रूप में संख्याओं की आवश्यकता नहीं है, बस करें:

functaulu = [munfunc(arg) for arg in range(loppu)]

बाद में यदि आपको इसे स्ट्रिंग की आवश्यकता है तो आप इसे स्ट्रिंग के साथ या प्रारूप स्ट्रिंग के साथ कर सकते हैं:

print "Vastaus5 = %s" % functaulu[5]


-1

कैसे आना-जाना पसंद नहीं है repr?
अजगर 3.7.2:

>>> int_list = [1, 2, 3, 4, 5]
>>> print(repr(int_list))
[1, 2, 3, 4, 5]
>>> 

हालांकि ध्यान रखें, यह एक स्पष्ट प्रतिनिधित्व है। एक उदाहरण दिखाता है:

#Print repr(object) backwards
>>> print(repr(int_list)[::-1])
]5 ,4 ,3 ,2 ,1[
>>> 

अधिक जानकारी pydocs-repr पर

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.