On Fri, Jan 27, 2012 at 21:24, Bartosz Telenczuk
Thank you for your tips. I was not aware of the possible problems with len.
There is no way to test all of the cases (empty sequence, empty array, None) in the same way. Usually, it's a bad idea to conflate the three.
I agree that this should be avoided. However, there are cases in which it is not possible or hard. My case is that I get some extra data to add to my plots from a database. The dataset may be undefined (which means None), empty array or empty list. In all cases the data should not be plotted. If I want to test for all the cases, my program becomes quite complex.
Well, if you really need to do this in more than one place, define a utility function and call it a day. def should_not_plot(x): if x is None: return True elif isinstance(x, np.ndarray): return x.size == 0 else: return bool(x)
In fact, Python provides False values for most empty objects, but NumPy seems to ignore this. It might be a good idea to have a helper function which handles all objects consistently.
np.asarray(x).size == 0 None should rarely be treated the same as an empty list or a 0-size array, so that should be left to application-specific code. -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco