[Python-ideas] Variations on a loop

Carl Johnson carl at carlsensei.com
Sat Aug 30 11:48:10 CEST 2008


Here's one way to test if the loop you just came out of was empty:

     for item in range(0):
         print item
     else:
         if "item" not in locals():
             print "Empty list."

Obviously, this only works if "item" has not been used in the current  
scope before. If anyone knows of a more efficient way to check if a  
variable name has been used besides using locals(), let me know.

Another way to do it is if you know that some particular value, such  
as None, will never appear in your list-like-object you can set item  
to that value in advance:

     item = None
     for item in range(0):
         print item
     else:
         if item is None:
             print "Empty list."

Again, this has the limitation that it only works if you can guaranty  
that your guard value won't be used by the loop. The advantage is that  
you don't have to create locals() and then do a __contains__ on it,  
which presumably takes longer than a simple assignment and identity  
check.

-- Carl Johnson



More information about the Python-ideas mailing list