2014-04-05 5 views
5

यह प्रश्न दार्शनिक है। पाइथन 2 में शानदार itertools मॉड्यूल है, विशेष रूप से, पाइथन अंतर्निहित कार्यों जैसे map, filter, zip, या slice के लिए जेनरेटर समकक्ष प्रदान करता है। और समकक्षों को क्रमश: imap, ifilter, izip, और islice कहा जाता है। जैसा कि मैं समझता हूं, उपसर्ग i उनके नामों में i टेटर है। लेकिन xrange के बारे में वही बात है: यह बड़ी सूची के बजाय range लौटने वाले जनरेटर ऑब्जेक्ट के बराबर है। तो, इसे irange क्यों नहीं कहा जाता है? उपसर्ग x वास्तव में क्या मतलब है?पायथन 2: क्यों xrange इरेंज कहा जाता है?

उत्तर

4

क्योंकि xrange() भाषा में इसके पहले भाषा में जोड़ा गया था और यह स्वयं ही इटेटरेटर नहीं है।

पायथन 1.0 को 1 99 4 में रिलीज़ किया गया था, इसलिए xrange() बहुत जल्दी जोड़ा गया था। x सबसे अधिक संभावना का यहां कोई विशिष्ट अर्थ नहीं है।

लेकिन xrange() वास्तव में एक पुनरावर्तक नहीं है, यह पुनरावृत्त है; आप इसे कई बार फिर से कर सकते हैं, इटरेटर के विपरीत। यह एक अनुक्रम भी है, क्योंकि इसकी लंबाई है और इसे अनुक्रमित किया जा सकता है।

इस तरह की वस्तु का नाम बदलकर range() (पायथन 2 range() फ़ंक्शन को पूरी तरह से बदल दिया गया है), और इसके अनुक्रम व्यवहार को आगे बढ़ाया गया है।

+0

धन्यवाद, फिर भी ** x ** क्या खड़ा है? –

+0

मुझे वास्तव में पता नहीं है; आपको गिडो से पूछना होगा। मुझे नहीं लगता कि यह किसी भी चीज़ के लिए खड़ा है। यह शायद किसी अन्य भाषा में एक समान वस्तु का संदर्भ है, या केवल 'श्रेणी()' से अलग करने के लिए एक उपसर्ग है। –

+0

क्या वास्तविक कार्यान्वयन में कोई अंतर नहीं है? जहां तक ​​मुझे पता है, सीपीथॉन में 'रेंज() 'सी लम्बी स्याही का उपयोग करके एक स्पीड ऑप्टिमाइज्ड कार्यान्वयन है, जबकि' इरेंज() 'एक नियमित इटरेटर है, जो' रेंज()' जैसी समान कार्यक्षमता प्रदान करता है। – Mkoch

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