2012-12-10 12 views
6

संभव डुप्लिकेट:
Why does “[] == False” evaluate to False when “if not []” succeeds?खाली सूची किसी के बराबर नहीं है या नहीं?

मैं

>>> 'true' if True else 'false' true 
    true 

मैं के रूप में [] क्योंकि कोड उत्पादन नीचे के लिए उम्मीद कर रहा हूँ अजगर की त्रिगुट ऑपरेटर के अनुसार अजगर को नया हूँ [ ] किसी के बराबर नहीं

>>> a=[] 
>>> a==None 
False 
>>> a if a else None 
None 

दलीलों सही अगर मैं गलत

धन्यवाद हेमा

+3

[सत्य मान परीक्षण] के लिए दस्तावेज़ देखें http://docs.python.org/2/:

>>> a if a else None [] if [] else None [] if False else None None 

यहाँ None के बारे में एक और उपयोगी चर्चा है: दुभाषिया की तर्ज पर कुछ करता है पुस्तकालय/stdtypes.html # सत्य-मान-परीक्षण)। –

+0

https://stackoverflow.com/questions/53513/best-way-to-check-if-a-list-is-empty – zerocog

उत्तर

10

खाली सूची, [], None के बराबर नहीं है हूँ।

हालांकि, यह False को मूल्यांकन कर सकते हैं --that कहने के लिए है, अपने 'truthiness "मूल्य False है। (टिप्पणी ओपी पर छोड़ दिया में सूत्रों देखें।)

इस वजह से

,

>>> [] == False 
False 
>>> if []: 
...  print "true!" 
... else: 
...  print "false!" 
false! 
+12

पर बेहतर उत्तर दें इसे रखने का सबसे आसान तरीका '[]! = गलत है लेकिन' बूल ([]) == गलत '। –

+1

@ लैटवेयरवेयर सच है, यह सबसे संक्षिप्त तरीका है, लेकिन मुझे लगता है कि पाइथन नौसिखिया को हालांकि परेशानी हो सकती है। – jdotjdot

+1

ओह, वास्तव में, मैं सुझाव नहीं दे रहा हूं कि आप अपने उत्कृष्ट स्पष्टीकरण को हटा दें, बस इसे एक और तरीका दें। –

0

NoneNoneType का एकमात्र उदाहरण है और आमतौर पर मूल्य के अभाव दर्शाता है प्रयोग किया जाता है। आपके उदाहरण में क्या होता है कि बूलियन संदर्भ में ली गई खाली सूची, False का मूल्यांकन करती है, स्थिति विफल हो जाती है, इसलिए अन्य शाखा निष्पादित हो जाती है। (not None test in Python

संबंधित मुद्दे