Conditional operator in Python?

Terry Reedy tjreedy at home.com
Tue Sep 4 14:19:01 EDT 2001


<thp at cs.ucr.edu> wrote in message
news:mailman.999590706.31784.python-list at python.org...
> which reads better with a couple of if's added:
>
>     p = lambda k, n :
>       if k < 1  or k > n  then
>         0
>       else if n == 1 or n == k then
>         1
>       else
>         p( k-1, n-1 ) + p (k, n-k )
>
> I'm not lobbying for ?: notation in particular.  I simply want
> something better than (a and [b] or [c])[0].  In fact, the
> if/then/else notation is my personal favorite.

So use def/return instead of lambda/whatever

def p(k,n):
  if    k < 1  or k > n: return 0
  elif n == 1 or n == k: return 1
  else: return p( k-1, n-1 ) + p (k, n-k )

This could hardly be any clearer.

Terry J. Reedy







More information about the Python-list mailing list