यह निम्न से संबंधित है: (अजगर कोड में)मुझे लूप लूप के बजाय मानचित्र का उपयोग कब करना चाहिए?
for i in object:
doSomething(i)
बनाम
map(doSomething, object)
दोनों को समझने के लिए आसान है, और कम कर रहे हैं, लेकिन वहाँ किसी भी गति का अंतर है? अब, अगर ऐसा कुछ है तो वापसी मूल्य था, हमें यह जांचने की आवश्यकता थी कि इसे मानचित्र से एक सूची के रूप में वापस कर दिया जाएगा, और लूप के लिए हम या तो अपनी खुद की सूची बना सकते हैं या एक समय में एक जांच सकते हैं।
for i in object:
returnValue = doSomething(i)
doSomethingWithReturnValue(returnValue)
बनाम
returnValue = map(doSomething, object)
map(doSomethingWithReturnValue, returnValue)
अब, मैं दो एक छोटा सा वितरित हो जाते हैं लग रहा है। दो doSomethingWithReturnValue फ़ंक्शन अलग-अलग हो सकते हैं, यदि वे लूप पर जाते हैं या अंत में एक बार में जांच करते हैं तो अलग-अलग परिणाम उत्पन्न करते हैं। यह भी लगता है कि लूप हमेशा काम करेगा, शायद धीमा, जहां नक्शा केवल कुछ परिदृश्यों के तहत काम करेगा। बेशक, हम काम करने के लिए गर्भपात कर सकते हैं, लेकिन पूरे बिंदु इस प्रकार के काम से बचने के लिए है।
जो मैं खोज रहा हूं वह एक परिदृश्य है जहां मैपिंग फ़ंक्शन वास्तव में प्रदर्शन, पठनीयता, रखरखाव, या कार्यान्वयन की गति में लूप के लिए अच्छी तरह से किए गए की तुलना में चमकता है। अगर जवाब वास्तव में कोई बड़ा अंतर नहीं है तो मैं जानना चाहता हूं कि अभ्यास में लोग एक या दूसरे का उपयोग करते हैं या यदि यह वास्तव में पूरी तरह से मनमानी है और आपके संस्थान के आधार पर कोडिंग मानकों द्वारा निर्धारित किया गया है।
धन्यवाद!
आप मानचित्र के बजाय सूची/शब्दकोश/सेट समझ या जेनरेटर का उपयोग कर सकते हैं - क्या कुछ करता है() करता है। –
प्रदर्शन प्रारंभिक tweak करने की कोशिश मत करो। मैं हमेशा सबसे अच्छा पठनीय विकल्प लेता हूं। बाद में रनटाइम दिखाएगा कि शोस्टॉपर प्रदर्शन एक मुद्दा है और आपने गति या संसाधन-उपयोग में सुधार किया है। –