पायथन में, एक मान x
हमेशा बराबर के लिए बाध्य नहीं होता है। शायद सबसे अच्छा ज्ञात उदाहरण NaN
:गैर-रिफ्लेक्सिव तत्वों वाले संग्रहों की तुलना
>>> x = float("NaN")
>>> x == x
False
अब बिल्कुल एक आइटम की एक सूची पर विचार करें। हम इस तरह की दो सूचियों को बराबर पर विचार कर सकते हैं यदि केवल वे आइटम बराबर थे। उदाहरण के लिए:
>>> ["hello"] == ["hello"]
True
लेकिन इस NaN
साथ मामला हो प्रतीत नहीं होता है:
>>> x = float("NaN")
>>> x == x
False
>>> [x] == [x]
True
ताकि "इसके बराबर नहीं" हैं मदों की इन सूचियों, "बराबर" कर रहे हैं। लेकिन केवल कभी-कभी ... विशेष रूप से:
- दो सूचियों में
NaN
के समान उदाहरण शामिल हैं; जबकि - दो अलग-अलग
NaN
के विभिन्न उदाहरणों से मिलकर सूचियों बराबर नहीं हैं
का निरीक्षण करें:
>>> x = float("NaN")
>>> [x] == [x]
True
>>> [x] == [float("NaN")]
False
यह सामान्य व्यवहार भी इस तरह के tuples और सेट के रूप में अन्य संग्रह प्रकार के लिए लागू होता है। क्या इसके लिए कोई अच्छा तर्क है?
यदि आप * चाहते हैं * NaNs के बराबर नहीं होने के साथ तुलना करने के लिए, आप NumPy का उपयोग कर सकते हैं, जो उन्हें इस तरह मानता है: '(np.array (a) == np.array (b))। सभी() यदि कोई नाएन हैं तो झूठी वापसी होगी। –