2012-12-12 13 views
6

documentation में स्लाइसिंग के उदाहरण केवल इंटीजर अक्षर और चर के रूप में उपयोग किए जाने वाले चर दिखाते हैं, अधिक जटिल अभिव्यक्ति नहीं (उदा। myarray[x/3+2:x/2+3:2])। पीईपी -8 भी इस मामले को कवर नहीं करता है। यहां व्हाइटस्पेस का सामान्य उपयोग क्या है: myarray[x/3+2:x/2+3:2], myarray[x/3+2 : x/2+3 : 2], या myarray[x/3+2: x/2+3: 2] (अन्य उचित विकल्प प्रतीत नहीं होते हैं)?पायथन में अभिव्यक्ति सूचकांक के साथ स्लाइसिंग के लिए अनुशंसित व्हाइटस्पेस क्या है?

+4

ठीक है, मैं सामान्य रूप से रिक्त स्थान मेरी ऑपरेटरों के आसपास है, और मुझे जटिल भाव बीच में लिखना होगा: 'myArray [(एक्स/3 + 2) :(एक्स/2 + 3): 2] '। –

+1

पीईपी 8 गणितीय ऑपरेटरों के आसपास एक जगह की सिफारिश करता है। –

उत्तर

7

मैंने कभी भी स्लाइसिंग ऑपरेशंस में उपयोग की जाने वाली रिक्त स्थान नहीं देखी हैं, इसलिए उन्हें टालने के पक्ष में गलती होगी। फिर फिर, जब तक कि यह महत्वपूर्ण प्रदर्शन न हो, मैं स्लाइसिंग ऑपरेशन के बाहर अभिव्यक्ति को पूरी तरह से स्थानांतरित करने के इच्छुक हूं। सब के बाद, अपने लक्ष्य को पठनीयता है:

lower = x/3 + 2 
upper = x/2 + 3 
myarray[lower:upper:2] 
+1

और यदि यह * प्रदर्शन * महत्वपूर्ण है तो मैं इसके बजाय साइथन का उपयोग करूंगा। –

3

मेरा मानना ​​है कि इस विषय पर PEP8 की सबसे अधिक प्रासंगिक अंश है:

यहाँ प्रदान करना है दिशा निर्देशों कोड की पठनीयता में सुधार लाने और बनाने के लिए यह पायथन कोड के विस्तृत स्पेक्ट्रम में संगत है।

इस मामले में, मेरी निजी पसंद शायद या तो स्टीव मायने का जवाब, या शायद होगा:

myarray[slice(x/3 + 2, x/2 + 3, 2)] 
संबंधित मुद्दे