मुझे पायथन में कुछ सूची समझ है जिसमें प्रत्येक पुनरावृत्ति एक अपवाद को फेंक सकती है।
उदाहरण के लिए , अगर मेरे पास:
eggs = (1,3,0,3,2)
[1/egg for egg in eggs]
मुझे ZeroDivisionError
3 तत्व में एक अपवाद मिलेगा ।
मैं इस अपवाद को कैसे संभाल सकता हूं और सूची की समझ का निष्पादन जारी रख सकता हूं?
जिस तरह से मैं सोच सकता हूँ कि एक सहायक समारोह का उपयोग करना है:
def spam(egg):
try:
return 1/egg
except ZeroDivisionError:
# handle division by zero error
# leave empty for now
pass
लेकिन यह मुझे थोड़ा बोझिल लगता है।
क्या पायथन में ऐसा करने का एक बेहतर तरीका है?
नोट: यह एक सरल उदाहरण है ( ऊपर " उदाहरण के लिए देखें" ) जो मैंने विवादित था क्योंकि मेरे वास्तविक उदाहरण के लिए कुछ संदर्भ की आवश्यकता है। मैं शून्य त्रुटियों से विभाजित होने से बचने में दिलचस्पी नहीं रखता लेकिन सूची समझ में अपवादों को संभालने में।
ndarray
उपयुक्त सेटिंग्स के साथ एक अंक का उपयोग कर सकते हैं np.seterr
। इसके परिणामस्वरूप होगा 1/0 = nan
। लेकिन मुझे लगता है कि यह उन अन्य स्थितियों के लिए सामान्य नहीं है जहां यह आवश्यकता होती है।
[1/egg except ZeroDivisionError: None for egg in (1,3,0,3,2)]
। लेकिन यह अभी भी ड्राफ्ट मोड में है। मेरी आंत की भावना यह है कि यह स्वीकार नहीं किया जाएगा। Imho अभिव्यक्तियाँ बहुत गन्दा हो सकता है (कई अपवादों की जाँच, अधिक जटिल संयोजन (कई तार्किक ऑपरेटर, जटिल समझ, आदि)