Cleaning up conditionals
Deborah Swanson
python at deborahswanson.net
Fri Dec 30 22:52:22 EST 2016
> On 30Dec2016 15:17, Deborah Swanson <python at deborahswanson.net> wrote:
> >> Ever consider using conjunctions?
> >>
> >> if len(l1[st]) and not len(l2[st]):
> >> #0 is considered a false -- no need to test for "==0"
> >> #non-0 is considered true -- no need to test for ">0"
> >> #copy l1 to l2
> >> elif not len(l1[st]) and len(l2[st]):
> >> #copy l2 to l1
> >> --
> >> Wulfraed Dennis Lee Bieber AF6VN
> >> wlfraed at ix.netcom.com HTTP://wlfraed.home.netcom.com/
> >
> >That's a neat shortcut, len(a) instead of len(a)!= 0. Thanks!
>
> Also, for almost every python collection (lists, tuples, sets
> etc), python
> boolean logic tests __nonzero__, which works off len() by default.
>
> So:
>
> if a:
> # a is not empty: len(a) > 0
> else:
> # a is empty: len(a) == 0
>
> I find this far more readable, presuming the reader knows
> that "empty" things
> test as false. Of course, you need to ensure that any
> "collection"-ish classes
> you use or write have this property, but the builtin ones do.
>
> Cheers,
> Cameron Simpson <cs at zip.com.au>
Another neat thing to know, and yes, that's much more readable. I've run
into trouble testing for empty (tests failed when they shouldn't have),
but I can't remember where I've had that problem, and since it happened
early in my learning python, chances are pretty good I screwed something
else up. Thanks, I'll remember to try using it again and see if I can
get it right.
More information about the Python-list
mailing list