可以为多个变量赋值.
a, b = 5, 10
Run Code Online (Sandbox Code Playgroud)
我需要根据条件分配这些值,我试过,
a, b = 1, 1 if c == 1 else 5, 10
Run Code Online (Sandbox Code Playgroud)
结果是一个ValueError.
ValueError:要解压缩的值太多
我尝试了两个条件,这是成功的.
a, b = 1 if c == 1 else 5, 1 if c == 1 else 10
Run Code Online (Sandbox Code Playgroud)
但我需要使用单一if条件,单行来实现这一目标.我知道这会降低可读性.但仍有可能吗?我在这做错了什么?
Ala*_*air 14
您可以通过(a, b)括号括起来实现这一点.
a, b = (1, 1) if c == 1 else (5, 10)
Run Code Online (Sandbox Code Playgroud)
当前代码相当于
a, b = 1, (1 if c == 1 else 5), 10
Run Code Online (Sandbox Code Playgroud)
当您尝试将3元组解压缩为两个变量时,会出现值错误.
您还可以使用以下结果进行索引c == 1:
a, b = ((5, 10), (1, 1))[c == 1]
Run Code Online (Sandbox Code Playgroud)
结果c == 1要么是True -> 1或False -> 0,所以我们最终会采取(1, 1)即指数1如果条件评估为真或(5, 10)即0如果是假的.
| 归档时间: |
|
| 查看次数: |
4140 次 |
| 最近记录: |