2016-02-29 12 views
9

के साथ सूची में वर्णमाला प्राथमिकता के साथ पहला आइटम खोजें कहें कि मेरे पास दोनों संख्याओं और तारों के साथ एक सूची वस्तु है। अगर मैं उच्चतम वर्णमाला प्राथमिकता वाले पहले स्ट्रिंग आइटम को पुनर्प्राप्त करना चाहता हूं, तो मैं ऐसा कैसे करूं?संख्या

यहाँ एक उदाहरण प्रयास जो स्पष्ट रूप से सही नहीं है है, लेकिन किस क्रम में परिवर्तित करने की यह वांछित परिणाम प्राप्त करने के लिए की जरूरत है के रूप में सुधार बहुत सराहना की जाएगी:

lst = [12, 4, 2, 15, 3, 'ALLIGATOR', 'BEAR', 'ANTEATER', 'DOG', 'CAT'] 

lst.sort() 
for i in lst: 
    if i[0] == "A": 
     answer = i 
print(answer) 
+3

के बारे में क्या 'अनुसार क्रमबद्ध ([मैं मैं lst में के लिए करता है, तो isinstance (i, str)]) [0]'? –

+3

आप फ़िल्टरिंग के बिना इस सूची को पायथन 3 में सॉर्ट नहीं कर सकते हैं, क्योंकि अब आप 'int' और' str' प्रकार –

उत्तर

8

IIUC आप के लिए isinstance इस्तेमाल कर सकते हैं केवल तार के साथ अपने मूल सूची के sublist मिलता है, तो sorted साथ वर्णमाला छंटाई द्वारा पहला तत्व मिल:

sub_lst = [i for i in lst if isinstance(i, str)] 
result = sorted(sub_lst)[0] 


print(sub_lst) 
['ALLIGATOR', 'BEAR', 'ANTEATER', 'DOG', 'CAT'] 

print(result) 
'ALLIGATOR' 

या आप min इस्तेमाल कर सकते हैं के रूप में @ TigerhawkT3 commen में सुझाव दिया टी:

print(min(sub_lst)) 
'ALLIGATOR' 
+8

या 'sorted() [0]' के बजाय 'min()' की तुलना नहीं कर सकते हैं। – TigerhawkT3

+3

नोट: सूची (सॉर्टिंग के लिए जरूरी) को भौतिक बनाने के लिए ओ (एन) स्पेस की आवश्यकता होती है और फिर सॉर्टिंग के लिए ओ ((एन लॉग एन) तुलना की आवश्यकता होती है। दूसरी ओर, जनरेटर अभिव्यक्ति पर 'min' का उपयोग करके केवल ओ (1) स्पेस की आवश्यकता होती है और ओ (एन) तुलना। –

15

पहले एक generator expression का उपयोग को फ़िल्टर करने के गैर-तार, और फिर उच्चतम वर्णमाला उपस्थिति के साथ स्ट्रिंग का चयन करने के min() का उपयोग करें:

>>> min(x for x in lst if isinstance(x, str)) 
'ALLIGATOR 
+0

@ एंटोनप्रोटोपोव, मुझे नहीं पता कि "पहली बार सूची में परिवर्तित" से आपका क्या मतलब है –

5

एक और तरीका है फिल्टर करने के लिए मुख्य सूची है lstfilter निर्मित विधि का उपयोग कर intergers से:

>>> min(filter(lambda s:isinstance(s, str), lst)) 
'ALLIGATOR' 
संबंधित मुद्दे