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.
j and i outside of the while-loop.x = a > b and 10 or 11 also works correctly in a specific set of problems, because anything that evaluates to false instead of 10 would make it fail, for example, a String.[i<2 and i or i-4 for i in range(4)] returns: [-4, 1, -2, -1]. It trolled me for two days and I had to actually read code line by line with my professor to figure out why our algorithm doesn't work. Thanks.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 10 if a > b else 11. No need to resort to boolean operators.