5

को नाव की एक सूची परिवर्तित मैं अजगर में तैरता है की एक सूची है और जब मैं इसे एक स्ट्रिंग में कनवर्ट करते हैं, मैं follwoing होअजगर स्ट्रिंग

[1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001] 

ये तैरता दशमलव बिंदु के बाद 2 अंक जब मैं उन्हें बनाया (मैं इतना विश्वास करते हैं),

तब मैं

str(mylist) 

इस्तेमाल किया मैं दशमलव बिंदु के बाद 2 अंकों के साथ एक स्ट्रिंग कैसे मिलता है?

======================

मुझे अधिक विशिष्ट करते हैं:

मैं की तरह कुछ प्राप्त करना चाहते हैं "[1883.95, 1878.33, 1869.43, 1863.40] "

मुझे बाद में कुछ स्ट्रिंग ऑपरेशन की आवश्यकता है। उदाहरण के लिए + = "! \ T!"

मैं अंतिम परिणाम एक स्ट्रिंग होना चाहता हूं और मैं विभाजक रखना चाहता हूं।

बेशक हम सभी जानते हैं कि इसे लूप में कैसे करना है, लेकिन उम्मीद है कि कोई भी बहुत स्मार्ट & इसे शानदार तरीके से ला सकता है।

निम्नलिखित कोड उदाहरण के लिए काम करता है @senshin से प्रेरित है, लेकिन मुझे लगता है कि वहाँ एक बेहतर तरीका

msg = "[" 
for x in mylist: 
    msg += '{:.2f}'.format(x)+',' 
msg = msg[0:len(msg)-1] 
msg+="]" 
print msg 

धन्यवाद है!

उत्तर

9

दशमलव स्थानों की वांछित संख्या प्राप्त करने के लिए स्ट्रिंग स्वरूपण का उपयोग करें।

>>> nums = [1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001] 
>>> ['{:.2f}'.format(x) for x in nums] 
['1883.95', '1878.33', '1869.43', '1863.40'] 

प्रारूप स्ट्रिंग {:.2f} का अर्थ है "दशमलव बिंदु (.2) के बाद दो स्थान के साथ एक निश्चित बिंदु संख्या (f) मुद्रित"। str.format स्वचालित रूप से सही ढंग से संख्या को गोल करेगा (माना जाता है कि आपने पहले स्थान पर दो दशमलव स्थानों के साथ संख्या दर्ज की है, इस स्थिति में फ़्लोटिंग-पॉइंट त्रुटि गोल करने के साथ गड़बड़ करने के लिए पर्याप्त नहीं होगी)।

+0

काम करता है कि, मैं [ '1883.95', '1878.33', '1869.43', '1863.40'] हालांकि, मैं की तरह कुछ प्राप्त कर सकते हैं "[1883.95, 1878 मिला है।33, 1869.43, 1863.40] "? मुझे बाद में कुछ स्ट्रिंग ऑपरेशन की आवश्यकता है। धन्यवाद! – Niebieski

+0

@Niebieski आप पूरी सूची का एक स्ट्रिंग प्रतिनिधित्व चाहते हैं? मुझे बहुत संदेह है कि आप यही चाहते हैं कि आप वास्तव में चाहते हैं, लेकिन आप केवल 'str () 'कुछ करीब पाने के लिए सूची में। – senshin

+0

मैं + = "! \ t!" करना चाहता हूं, या इसी तरह के ऑपरेशन – Niebieski

1
map(lambda n: '%.2f'%n, [1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001]) 

map() invokes प्रतिदेय सूची में प्रत्येक तत्व के लिए पहले दिया गया तर्क/iterable दूसरा तर्क के रूप में पारित कर दिया।

+1

देता है कृपया अपने उत्तर में एक स्पष्टीकरण शामिल करें। कोड-केवल उत्तर शायद ही कभी लोगों को सीखने में मदद करते हैं, जो (आदर्श) हम यहां क्या कर रहे हैं। – BradleyDotNET

+0

@ ब्रैडली हो गया! हैप्पी? :) Alt हालांकि मैं पूरी तरह से सहमत नहीं हूं कि «कोड-केवल उदाहरण शायद ही कभी लोगों को सीखने में मदद करते हैं»। –

0

से छुटकारा 'के निशान:

>>> nums = [1883.95, 1878.3299999999999, 1869.4300000000001, 1863.4000000000001] 
>>> '[{:s}]'.format(', '.join(['{:.2f}'.format(x) for x in nums])) 
'[1883.95, 1878.33, 1869.43, 1863.40]' 
  • [' {: .2f}। 'प्रारूप (एक्स) nums में एक्स के लिए], स्ट्रिंग की एक सूची बनाता है के रूप में स्वीकार जवाब।
  • ',' .join ([list]) सूची तत्वों के बीच डाली गई 'स्ट्रिंग' के साथ एक स्ट्रिंग देता है।
  • '[{: s}]' प्रारूप (join_string) ब्रैकेट जोड़ता है।
संबंधित मुद्दे