【问题标题】:Updating different elements of an array based on a ternary condition基于三元条件更新数组的不同元素
【发布时间】:2020-08-08 00:49:08
【问题描述】:

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

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

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

提前致谢!

【问题讨论】:

    标签: python conditional-operator


    【解决方案1】:

    您必须将此表达式移动到您的索引操作中

    a[1 if True else 2] += 1
    

    由于python中指定的语法,不能在条件表达式中做赋值

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

    += 等修饰符也是如此。

    【讨论】:

      【解决方案2】:

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

      a[1], a[2] = (a[1] + 1, a[2]) if True else (a[1], a[2] + 1)
      

      【讨论】:

        【解决方案3】:

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

        a[ 1 if True else 2 ] +=1
        

        Ps:刚刚发现我太慢了

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-08-20
          • 1970-01-01
          • 2015-03-29
          • 1970-01-01
          相关资源
          最近更新 更多