2010-02-19 9 views
16

क्या कोई चालाक इन-बिल्ट फ़ंक्शन या कुछ है जो नीचे min() उदाहरण के लिए 1 वापस करेगा? (मुझे यकीन है कि इसमें कुछ भी वापस जाने के लिए नहीं करने के लिए एक ठोस कारण नहीं है, लेकिन मेरी विशेष मामले में मैं इसे की जरूरत है वास्तव में बुरा None मूल्यों की उपेक्षा करने के लिए!)पायथन में न्यूनतम के साथ कोई सूची नहीं?

>>> max([None, 1,2]) 
2 
>>> min([None, 1,2]) 
>>> 

उत्तर

33

None लौटे किया जा रहा है

>>> print min([None, 1,2]) 
None 
>>> None < 1 
True 

हैं

>>> L = [None, 1, 2] 
>>> min(x for x in L if x is not None) 
1 
+1

ध्यान दें कि 'None' केवल अजगर 2 में दिया जाता है अजगर 3 में,' मिनट ([कोई नहीं, 1, 2]) 'पैदावार एक 'टाइप एरर:' <'' int 'और' noneType 'के उदाहरणों के बीच समर्थित नहीं है। –

3

एक जनरेटर अभिव्यक्ति का उपयोग करते हुए: आप 1 आप दूर फिल्टर करने के लिए None है लौटना चाहते

>>> min(value for value in [None,1,2] if value is not None) 
1 

अंत में, आप फिल्टर का उपयोग कर सकते हैं:

>>> min(filter(lambda x: x is not None, [None,1,2])) 
1 
+1

'कोई नहीं' – SilentGhost

+0

से निपटने पर पहचान की तुलना करना समानता है, तो आप सही, सही हैं। –

+2

सिंटैक्स में पायथन 3 नहीं है। यह पाइथन 2 में ठीक काम करता है। 'किसी भी' के साथ तुलना करने के लिए 'is' का उपयोग' मान 'जैसा नहीं है ''=' (या '! =') का उपयोग करने के लिए कोई भी नहीं है। 'फ़िल्टर' वाली रेखा ** गलत ** है, सूची में 0 डालने का प्रयास करें और आप देखेंगे कि यह भी फ़िल्टर किया जाएगा, जो आप नहीं चाहते हैं। – nosklo