2012-05-13 12 views
21

में देखते हुएएक सूची एक चर का उपयोग करके सूची टुकड़ा करने की क्रिया, अजगर

a = range(10) 

आप बयानों का उपयोग कर इसे काट कर सकते हैं इस तरह के

a[1] 
a[2:4] 

के रूप में हालांकि, मैं एक चर कहीं और सेट के आधार पर ऐसा करना चाहते हैं कोड में मैं इसे पहले

i = 1 
a[i] 

पर आसानी से ऐसा कर सकता हूं लेकिन मैं इसे दूसरे के लिए कैसे कर सकता हूं? मैंने सूची के साथ अनुक्रमण करने का प्रयास किया है:

i = [2, 3, 4] 
a[i] 

लेकिन यह काम नहीं करता है। मैंने स्ट्रिंग का उपयोग करने का भी प्रयास किया है:

i = "2:4" 
a[i] 

लेकिन यह या तो काम नहीं करता है।

क्या यह संभव है?

उत्तर

40

है कि क्या slice() के लिए है:

a = range(10) 
s = slice(2,4) 
print a[s] 

लेकिन वह तो a[2:4] का उपयोग कर वास्तव में इतना अलग नहीं है।

7

यह एक चरणीय क्यों होना चाहिए? बस दो चर का उपयोग करें:

i, j = 2, 4 
a[i:j] 

यह वास्तव में एकल वैरिएबल आप एक टपल इस्तेमाल कर सकते हैं की जरूरत है, तो।

+1

मेरे उपयोग मामले में एचटीएमएल की कुछ विस्तृत पार्सिंग शामिल है, जो इस HTML तालिका में अंतिम तत्व खोजने की कोशिश कर रहा है। कोड 'last_row = list (reversed (parsed_html_rows [-2: -1]) की तरह दिखता है)' कोड समीक्षा में हमें एहसास हुआ कि मेरे पास विभिन्न सामानों को निकालने के लिए कोड में इनमें से कई 'जादू श्रृंखला' हैं। उनके लिए एक नाम देना मेरे लिए और समीक्षक के लिए आसान बनाता है .. 'last_row_indices = टुकड़ा (-2, -1)' और 'last_row = सूची (उल्टा (पंक्तियां [last_row_indices])) # क्यों और अधिक wtf'ing क्यों - 2: -1' –

2

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

a = range(10) 
i = 2 
j = 4 

तो

print a[i:j] 
[2, 3] 
2
>>> a=range(10) 
>>> i=[2,3,4] 

>>> a[i[0]:i[-1]] 
range(2, 4) 

>>> list(a[i[0]:i[-1]]) 
[2, 3] 
संबंधित मुद्दे