# Cleaning up conditionals

Deborah Swanson python at deborahswanson.net
Fri Dec 30 18:17:55 EST 2016

```> On Fri, 30 Dec 2016 13:20:15 -0800, "Deborah Swanson"
> <python at deborahswanson.net> declaimed the following:
>
> >I've already learned one neat trick to collapse a conditional:
> >
> >	a = expression1 if condition else expression2
> >
> >Here I have a real mess, in my opinion:
> >
> >	if len(l1[st]) == 0:
> >          if len(l2[st]) > 0:
> >              l1[st] = l2[st]
> >          elif len(l2[st]) == 0:
> >              if len(l1[st]) > 0:
>
> 	You will never reach here. The above "elif" is only
> reachable if "len(l1[st])" IS EQUAL TO 0, which means that
> the later "if" can not be true.
>
> >                  l2[st] = l1[st]
> >
> >  (Basically, if one field from two adjacent rows is empty and the
> >other is
> >  not, copy the non-empty field to the empty one. I use this
> for rental
> >  listings that are identical but posted on different dates,
> to copy the
> >
> >  data from an older one to the new one. Or, if I look up
> the data for
> >a new
> >  listing, to copy it back to the older ones.)
> >
> >Anybody know or see an easier (more pythonic) way to do
> this? I need to
> >do it for four fields, and needless to say, that's a really
> long block
> >of ugly code.
> >
>
> 	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!

Yes, 4 lines is an improvement on 6 lines, but I was hoping for