Suppose I have some code like:
if A[i] > B[j]:
x = A[i]
i += 1
else:
x = B[j]
j += 1
Is there a simpler way to write it? Does Python offer syntax similar to this?
x = (A[i] > B[j]) ? A[i] : B[j]
((A[i] > B[j]) ? i : j) += 1
Suppose I have some code like:
if A[i] > B[j]:
x = A[i]
i += 1
else:
x = B[j]
j += 1
Is there a simpler way to write it? Does Python offer syntax similar to this?
x = (A[i] > B[j]) ? A[i] : B[j]
((A[i] > B[j]) ? i : j) += 1
The most readable way is
x = 10 if a > b else 11
but you can use and
and or
, too:
x = a > b and 10 or 11
The "Zen of Python" says that "readability counts", though, so go for the first way.
Also, the and-or trick will fail if you put a variable instead of 10
and it evaluates to False
.
However, if more than the assignment depends on this condition, it will be more readable to write it as you have:
if A[i] > B[j]:
x = A[i]
i += 1
else:
x = A[j]
j += 1
unless you put i
and j
in a container. But if you show us why you need it, it may well turn out that you don't.
Try this:
x = a > b and 10 or 11
This is a sample of execution:
>>> a,b=5,7
>>> x = a > b and 10 or 11
>>> print x
11