Checking if elements are empty

Steve Holden steve at holdenweb.com
Mon Sep 10 15:34:52 EDT 2007


Neil Cerutti wrote:
> On 2007-09-10, Chris Mellon <arkanes at gmail.com> wrote:
>> On 9/10/07, Neil Cerutti <horpner at yahoo.com> wrote:
>>> Agreed; but I prefer 'if y[0] == ""', absent more context and
>>> better names.
>> Probably should use u"" if you're going to take that route, as
>> this will fail spuriously if y[0] contains a unicode string
>> that can't be implicitly converted to ascii. Personally, I
>> prefer the boolean check and I'll let operations fail elsewhere
>> if there's a type mismatch.
> 
> I have a quibble not with the functionality of the boolean check,
> but with its expressiveness. if y[0] == "" expresses more, i.e.,
> that I expect y[0] to contain a Python byte string.
> 
I have a quibble with a test that will raise an exception when the 
anticipated condition is true. Your test is patently absurd, as you 
would have discovered had you bothered to try it:

 >>> y = ""
 >>> if y[0] == "":
...   print "True"
... else:
...   print "False"
...
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
IndexError: string index out of range
 >>>

Further, when the string is *not* the null string the test will always 
return False, as you will be comparing two strings of unequal length.

So, absent a solution that works, len(y) == 0 looks pretty good.

regards
  Steve
-- 
Steve Holden        +1 571 484 6266   +1 800 494 3119
Holden Web LLC/Ltd           http://www.holdenweb.com
Skype: holdenweb      http://del.icio.us/steve.holden
--------------- Asciimercial ------------------
Get on the web: Blog, lens and tag the Internet
Many services currently offer free registration
----------- Thank You for Reading -------------




More information about the Python-list mailing list