मान लीजिए कि मैं पाइथन में एक सूची से पहले तत्व, तीसरे से 200 वें तत्व, और अंतिम तत्व के माध्यम से अंतिम तत्व के माध्यम से 201 वें तत्व चाहता हूं।पायथन: अंतराल के साथ स्लाइस के लिए छोटा वाक्यविन्यास?
एक तरह से यह अलग अनुक्रमण और संयोजन के साथ है करने के लिए:
new_list = old_list[0:1] + old_list[3:201] + old_list[201::3]
वहाँ old_list
पर सिर्फ एक सूचकांक के साथ यह करने के लिए कोई तरीका है? मैं निम्नलिखित की तरह कुछ चाहते हैं (मैं यह नहीं करता है पता वाक्य रचना काम के बाद से सूची सूचकांक सूचियों नहीं किया जा सकता और अजगर के बाद दुर्भाग्य से doesn't have slice literals, मैं बस पास कुछ के लिए देख रहा हूँ):
new_list = old_list[[0, 3:201, 201::3]]
मैं से कुछ हासिल कर सकते हैं यह NumPy arrays पर स्विच करके, लेकिन मुझे देशी पायथन सूचियों के लिए इसे कैसे करना है, इस बारे में अधिक रुचि है। मैं a slice maker या ऐसा कुछ भी बना सकता हूं, और संभवतः मजबूत हाथ जो मुझे मेरे सभी वांछित स्लाइसों की संरचना का प्रतिनिधित्व करने के लिए समकक्ष स्लाइस ऑब्जेक्ट देने में सक्षम था।
लेकिन मैं ऐसा कुछ ढूंढ रहा हूं जिसमें स्लाइस को प्रबंधित करने के लिए एक नई कक्षा बनाने में शामिल न हो। मैं बस स्लाइस सिंटैक्स को संयोजित करना चाहता हूं और अपनी सूची में फ़ीड करना चाहता हूं और सूची को समझना है कि इसका मतलब स्लाइस को अलग से प्राप्त करना और अंत में अपने संबंधित परिणामों को जोड़ना है।
"पाइथन दुर्भाग्य से टुकड़ा प्राइमेटिव नहीं है" यहां तक कि 'टुकड़ा' भी नहीं है? –
क्षमा करें, मुझे टुकड़ा अक्षर कहा जाना चाहिए, टुकड़ा primitives नहीं। यही है, आप सिंटैक्स '(0: 10: 2)' के आसपास बस नहीं जा सकते हैं, जैसे कि वह स्वयं कुछ वस्तु थी जो हमेशा सूचकांक का प्रतिनिधित्व करती थी। आपको अपनी खुद की स्लाइस ऑब्जेक्ट बनाने की कठिन अतिरिक्त परत से गुजरना है, जो स्लाइस सिंटैक्स की सभी नस्लों को नष्ट कर देता है। मेरा [प्रश्न जो उपरोक्त में भी जुड़ा हुआ है] देखें (http://stackoverflow.com/questions/13706258/passing-python-slice-syntax-around-to- समारोह)। – ely