2010-11-19 16 views
5

बस कुछ भी ज्यादा उत्सुक क्यों है कि पाइथन मुझे सूची के टुकड़े को अपडेट करने की अनुमति देगा लेकिन स्ट्रिंग नहीं?मैं सूची स्लाइस को अपडेट क्यों कर सकता हूं लेकिन पायथन में स्ट्रिंग स्लाइस नहीं?

>>> s = "abc" 
>>> s[1:2] 
'b' 
>>> s[1:3] 
'bc' 
>>> s[1:3] = "aa" 

>>> l = [1,2,3] 
>>> l[1:3] 
[2, 3] 
>>> l[1:3] = [9,0] 
>>> l 
[1, 9, 0] 

क्या इसके लिए कोई अच्छा कारण है? (मुझे यकीन है कि वहाँ है।)

+0

"क्या इसके लिए कोई अच्छा कारण है?" हाँ। स्ट्रिंग्स सूचियां नहीं हैं। गंभीरता से, यही कारण है। वे अलग-अलग काम करते हैं। –

उत्तर

5

पायथन परिवर्तनीय और अपरिवर्तनीय डेटा प्रकारों को अलग करता है। स्ट्रिंग्स अपरिवर्तनीय बनाना पायथन में एक सामान्य डिजाइन निर्णय है। इंटीजर अपरिवर्तनीय हैं, आप 42 के मान को नहीं बदल सकते हैं। स्ट्रिंग को पाइथन में मान भी माना जाता है, इसलिए आप "fourty-two" को किसी और चीज़ में नहीं बदल सकते हैं।

यह डिज़ाइन निर्णय कई अनुकूलन के लिए अनुमति देता है। उदाहरण के लिए, यदि कोई स्ट्रिंग ऑपरेशन स्ट्रिंग के मान को नहीं बदलता है, तो आमतौर पर सीपीथॉन मूल स्ट्रिंग देता है। यदि स्ट्रिंग्स व्यवहार्य थे, तो प्रतिलिपि बनाना हमेशा आवश्यक होगा।

9

क्योंकि पाइथन में, तार immutable हैं।

+0

+1। यह कई प्रोग्रामिंग भाषाओं में सत्य है (जो एक स्ट्रिंग कार्यान्वयन प्रदान करते हैं) –

+0

ग्रेट प्वाइंट, मैं पूरी तरह से अजगर तारों के इस पहलू के बारे में भूल गया। समय बर्बाद करने के लिए खेद है। – Chris

+0

इसे अपने ऊपर मत मारो। इसके अलावा, यह अगले प्रश्न में मदद कर सकता है जो इस प्रश्न में ठोकर खा रहा है :) –

संबंधित मुद्दे