2013-02-22 13 views
6

मैं इस तरह कुछ सूची है:कुछ सबस्ट्रिंग के साथ शुरू होने वाली सूचियों में स्ट्रिंग के इंडेक्स को कैसे ढूंढें?

lines = [ 
    "line", 
    "subline2", 
    "subline4", 
    "line", 
] 

और मैं लाइनों के सूचकांक की सूची लेने के लिए जो कुछ-स्ट्रिंग के साथ शुरू होता चाहते हैं।

मैं इस दृष्टिकोण का उपयोग:

starts = [n for n, l in enumerate(lines) if l.startswith('sub')] 

लेकिन शायद किसी को भी अधिक सुंदर दृष्टिकोण जानता है?

+0

यह मेरे लिए सुंदर पायथनिक दिखता है। – Blender

+0

इस के साथ क्या गलत है? यह एक पूरी तरह से मान्य पायथन :) –

+0

@MarekKowalski मुझे लगता है हर बार जब हमारे पास अधिक पाइथनिक दृष्टिकोण होता है :) – kharandziuk

उत्तर

1

मुझे पता है कि यह कुछ समय हो गया है क्योंकि यह सवाल सक्रिय था, लेकिन अगर कोई दिलचस्पी लेता है तो यहां एक और समाधान है।

आपका तरीका ठीक लग रहा है, लेकिन यहाँ है एक समान रणनीति, list.index() विधि का उपयोग कर:

starts = [lines.index(l) for l in lines if l.startswith('sub')] 

जहाँ तक समय चला जाता है के रूप में, पर में दो कार्य घड़ी के बारे में (औसत 1.7145156860351563e-06 सेकंड पर के लिए एक ही अपने enumerate समाधान और 1.7133951187133788e-06 सेकंड .index() समाधान के लिए सेकंड)

संबंधित मुद्दे

 संबंधित मुद्दे