2009-02-06 15 views
35

में एक सूची में कुछ मूल्य का पहला और अंतिम सूचकांक ढूँढना वहाँ है किसी भी अंतर्निहित तरीकों कि सूचियों का हिस्सा हैं कि मुझे कुछ मूल्य का पहला और अंतिम सूचकांक देना होगा, जैसे:अजगर

verts.IndexOf(12.345) 
verts.LastIndexOf(12.345) 
+1

शायद आपको पाइथन दस्तावेज़ों में सूचियों पर पढ़ना चाहिए: http://docs.python.org/library/stdtypes.html#mutable-sequence-types। मुझे लगता है कि बहुत सारे प्रश्न पूछने से बहुत तेज होगा। –

+2

मैं उन्हें भी पढ़ रहा हूं, लेकिन पाइथन के बारे में कुछ भी नहीं जानना मुश्किल बनाता है। मुझे इसका वाक्यविन्यास बहुत गूढ़ लगता है। –

+0

यदि आपकी सूचियां क्रमबद्ध हैं, तो आप bisect मॉड्यूल को देखना चाहेंगे। –

उत्तर

59

अनुक्रमों में एक विधि है index(value) जो पहली घटना का सूचकांक देता है - आपके मामले में यह verts.index(value) होगा।

अंतिम सूचकांक को खोजने के लिए आप इसे verts[::-1] पर चला सकते हैं। इधर, इस होगा len(verts) - 1 - verts[::-1].index(value)

+0

धन्यवाद, आप कैसे प्रदर्शन करते हैं सूची [:: - 1]? पदों [:: - 1]? –

+0

हाँ, मैंने जवाब – SilentGhost

+2

संपादित किया है बीटीडब्ल्यू कर्ट [:: - 1] बस सूची को उलट देता है, है ना? तो मुझे सूचकांक की भरपाई करनी है, है ना? –

14

उपयोग i1 = yourlist.index(yourvalue) और i2 = yourlist.rindex(yourvalue).

+13

पायथन _strings_ में 'rindex' है, लेकिन सूचियां नहीं हैं। –

+0

क्षमा करें, आप सही हैं। मैं भूल गया कि सूचियों में rindex नहीं है। आपको सूची को उलट करने की जरूरत है। –

+9

सच है, लेकिन 'रिंडेक्स' है जो बहुत से पाठकों की तलाश में है ... –

11

अगर आप MyList में myvalue के अंतिम घटना के सूचकांक के लिए खोज रहे हैं:

len(mylist) - mylist[::-1].index(myvalue) - 1 
7

एक छोटे सहायक समारोह के रूप में:

def rindex(mylist, myvalue): 
    return len(mylist) - mylist[::-1].index(myvalue) - 1 
2

यह विधि

से अधिक अनुकूलित हो सकती है
def rindex(iterable, value): 
    try: 
     return len(iterable) - next(i for i, val in enumerate(reversed(iterable)) if val == value) - 1 
    except StopIteration: 
     raise ValueError 
+1

अधिक स्पेस-कुशल होने के अर्थ में "अनुकूलित" है, लेकिन यह लगभग 50% धीमी है। – dubiousjim