Python if-else 简写

170 投票
2 回答
436772 浏览
提问于 2025-04-17 13:21

假设我有一些代码如下:

if A[i] > B[j]:
    x = A[i]
    i += 1
else:
    x = B[j]
    j += 1

有没有更简单的写法?Python有没有类似的语法?

x = (A[i] > B[j]) ? A[i] : B[j]
((A[i] > B[j]) ? i : j) += 1

2 个回答

22

试试这个:

x = a > b and 10 or 11

这是一个执行的示例:

>>> a,b=5,7
>>> x = a > b and 10 or 11
>>> print x
11
374

最简单易懂的写法是

x = 10 if a > b else 11

不过你也可以用 andor,这也是可以的:

x = a > b and 10 or 11

不过“Python之禅”说过“可读性很重要”,所以建议你用第一种写法。

另外,如果你把一个变量放在 10 的位置,而这个变量的值是 False,那么用 and-or 的方法就会出问题。

不过,如果这个条件不仅仅是为了赋值,还涉及到其他的内容,那么你这样写会更容易理解:

if A[i] > B[j]:
  x = A[i]
  i += 1
else:
  x = A[j]
  j += 1

除非你把 ij 放在一个容器里。但如果你能告诉我们你为什么需要这样做,可能会发现其实你并不需要。

撰写回答