Hacker News new | ask | show | jobs
by orf 1992 days ago
For good reason - len(something) or alternatives might be expensive to compute, bool(something) is actually what you are trying to do and can be optimised depending on the container.
1 comments

For the basic sequence types (list, tuple, and range), len is definitely not expensive to compute. For custom types, it will depend on your implementation of __len__ (but then, computation of bool(...) will also depend on your implementation of __bool__).
Yes, len() with the basic types are not expensive, and it can vary based on the container implementation, but that’s not really the point.

The reason you should use “if x” is the same reason you should use “if x not in y” rather than “if not x in y”. It better expresses the semantics of your operation with the side effect that it may be faster.

Oh yeah, totally agree that it's idiomatic and (in my opinion) cleaner.