根据三元条件更新数组的不同元素

我正在寻找三元运算符语法来做类似的事情

a = [1, 2, 3, 4, 5]
if True:
    a[1] += 1
else:
    a[2] += 1

我努力了

a[1] += 1 if True else a[2] += 1

True and a[1] += 1 or a[2] += 1

都抛出错误

SyntaxError: invalid syntax

有人知道这样做的三元方式吗?

提前致谢!

评论
  • Dicke
    Dicke 回复

    注意三元运算符并不总是最干净的解决方案

    a[ 1 if True else 2 ] += 1
    
  • Bobi
    Bobi 回复

    我认为@CoryKramer的解决方案更优雅,但只是提供了另一种方法:

    a[1], a[2] = (a[1] + 1, a[2]) if True else (a[1], a[2] + 1)
    
  • kqui
    kqui 回复

    您将不得不将此表达式移到索引操作本身中

    a[1 if True else 2] += 1
    

    由于python中指定了语法,因此无法在条件表达式中进行赋值

    >>> a = 1 if True else b = 1
    SyntaxError: can't assign to conditional expression
    

    This is also true for modifiers like +=.