पाइथन में एक आम एंटीपार्टर्न +
एक लूप में उपयोग करके तारों के अनुक्रम को समतल करना है। यह बुरा है क्योंकि पायथन दुभाषिया को प्रत्येक पुनरावृत्ति के लिए एक नया स्ट्रिंग ऑब्जेक्ट बनाना पड़ता है, और यह द्विघात समय लगता है। (सीपीथॉन के हाल के संस्करण कुछ मामलों में स्पष्ट रूप से इसे अनुकूलित कर सकते हैं, लेकिन अन्य कार्यान्वयन नहीं कर सकते हैं, इसलिए प्रोग्रामर इस पर निर्भर होने से हतोत्साहित होते हैं।) ''.join
ऐसा करने का सही तरीका है।
हालाँकि, मैंने यह कहा है ( स्टैक ओवरफ्लो पर यहाँ सहित ) जो आपको कभी नहीं, कभी+
स्ट्रिंग के संयोजन के लिए उपयोग करना चाहिए , लेकिन इसके बजाय हमेशा उपयोग करें ''.join
या एक प्रारूप स्ट्रिंग। मुझे समझ में नहीं आता कि अगर आप केवल दो तारों को समेट रहे हैं तो यह मामला क्यों है। अगर मेरी समझ सही है, तो यह द्विघात समय नहीं लेना चाहिए, और मुझे लगता a + b
है कि क्लीनर ''.join((a, b))
या तो या से अधिक पठनीय है '%s%s' % (a, b)
।
क्या +
दो तारों को समतल करने के लिए उपयोग करना अच्छा है ? या क्या कोई समस्या है जिससे मैं अवगत नहीं हूं?
+
तेज या धीमी है? और क्यों?
In [2]: %timeit "a"*80 + "b"*80
1000000 loops, best of 3: 356 ns per loop
In [3]: %timeit "%s%s" % ("a"*80, "b"*80)
1000000 loops, best of 3: 907 ns per loop
In [3]: %timeit "%s%s" % (a, b) 1000000 loops, best of 3: 590 ns per loop
In [4]: %timeit a + b 10000000 loops, best of 3: 147 ns per loop
__str__
। उदाहरणों के लिए मेरा उत्तर देखें।