2010-08-28 18 views
163

के साथ इंटीजर मान हैं I आइटमों की एक सूची में शामिल होने की आवश्यकता है। सूची में से कई आइटम फ़ंक्शन से लौटाए गए पूर्णांक मान हैं। अर्थात्:एक सूची में शामिल होना जिसमें पाइथन

myList.append(munfunc()) 

मैं कैसे एक स्ट्रिंग के लिए लौट आए परिणाम में परिवर्तित कर देना चाहिए ताकि सूची के साथ शामिल होने के लिए में?

मैं ऐसा करने की जरूरत है हर पूर्णांक मान के लिए निम्न:

myList.append(str(myfunc()) 

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

+3

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

उत्तर

322

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

आप शायद यह विचार करना चाहें कि आप स्ट्रिंग्स की सूची क्यों चाहते हैं। इसके बजाय आप इसे पूर्णांक की सूची के रूप में रख सकते हैं और जब आपको उन्हें प्रदर्शित करने की आवश्यकता होती है तो केवल पूर्णांक को तारों में परिवर्तित कर सकते हैं। उदाहरण के लिए, यदि आप पूर्णांकों की एक सूची है तो आप ऐसा कर सकते हैं:

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

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

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

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

+3

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

1

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

>>> 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 है, लेकिन सरल और विषय पर रहने)

0

शायद तुम तारों के रूप में संख्या की जरूरत नहीं है, बस कार्य करें:

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

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

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

22

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

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

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

a = map(str, a)  
''.join(a)  
'123' 
4
a=[1,2,3] 
b=[str(x) for x in a] 
print b 
विधि ऊपर

सबसे आसान और सबसे सामान्य तरीके से सूची कन्वर्ट करने के लिए है में सूची गठबंधन करने के लिए स्ट्रिंग में एक और छोटी विधि है-

a=[1,2,3] 
b=map(str,a) 
print b 
संबंधित मुद्दे