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