मूल रूप से, एक सूची __reversed__
विधि को लागू करता है और एक विशेष वस्तु देता है, जबकि tuple
किसी भी क्रम के लिए reversed
के डिफ़ॉल्ट कार्यान्वयन के लिए वापस गिर जाता है:, अब
>>> list.__reversed__
<method '__reversed__' of 'list' objects>
>>> tuple.__reversed__
AttributeError: type object 'tuple' has no attribute '__reversed__'
क्यों सूची अनुक्रम reversed
के लिए डिफ़ॉल्ट नहीं है ऑब्जेक्ट को सूची ऑब्जेक्ट के लिए स्रोत कोड में पाया जाना चाहिए - शायद यह आंतरिक कुछ list
विशेषताओं तक पहुंचकर कुछ अनुकूलन को सक्षम बनाता है।
वास्तव में सी कोड को देखते हुए, वहाँ थोड़ा अंतर है, और निश्चित रूप से कुछ भी नहीं है कि आँख पकड़ता है -
मैं कहता हूँ विशेष सूची की हिम्मत होगी __reversed__
कार्यान्वयन Python2 दिनों से एक बचे हुए है जहां reversed
वास्तव में किसी भी अन्य पायथन अनुक्रम को list
पर कॉपी करेगा - इसलिए अन्य अनुक्रम के लिए कोई अर्थ नहीं होगा इसके लिए विशेष मामले हैं (और जब उन्होंने सामान्य enumreverse
लागू किया था तो यह टुपल्स के लिए पर्याप्त था)।
मैं बहुत यकीन है कि अगर एक बस listobject.c
पर __reversed__
स्लॉट बाहर टिप्पणी की, अजगर और उसके सूचियों कुछ भी नहीं है जैसे कि क्या हुआ था काम करेगा, सामान्य मामले reversed
को दोषी हूँ।
जब तक आप पाइथन के पुराने संस्करण का उपयोग नहीं कर रहे हैं, तब तक कोई अंतर बार प्रदर्शन नहीं होता है, जहां आप सूची-सूचीकर्ता पर लेन को कॉल कर सकते हैं। http://bugs.python.org/issue3689। –