Pythonic方式有条件地分配变量

Lem*_*m0n 3 python

有关如何在Python中执行此操作的任何建议?

if x():
  a = 20
  b = 10
else:
  a = 10
  b = 20
Run Code Online (Sandbox Code Playgroud)

我可以如下交换它们,但它不是那么清楚(也不是非常pythonic的IMO)

a = 10
b = 20
if x():
  [a, b] = [b, a]
Run Code Online (Sandbox Code Playgroud)

Chr*_*ett 11

(a,b) = (20,10) if x() else (10,20)
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果使用元组而不是列表,这可能会更有效,因为元组是不可变的,它们可以由解释器实现. (3认同)

unu*_*tbu 5

交换值在Python中a, b = b, a被认为是惯用的.

a, b = 10, 20
if x(): a, b = b, a
Run Code Online (Sandbox Code Playgroud)

一个好处是关于这就是你不要重复1020,所以这是一个有点干儿.