是否可以声明包含 if 语句的变量?下面的伪代码(只是为了举例说明的思想写的),代表了所追求的思想,即变量m根据j的值取不同的值。
j = [1, 2, 3]
m = if j[0]:
[{'b': 0.0, 'x': 0.0, 'm': 0.02} for _ in range(100)]
if j[1]:
[{'b': 0.5, 'x': 0.5, 'm': 0.02} for _ in range(100)]
if j[2]:
[{'b': 1.0, 'x': 1.0, 'm': 0.02} for _ in range(100)]
我知道您正在寻找的是根据特定条件快速分配变量。有几种方法可以做到这一点(我稍微修改了您示例中的值,因为您总是返回相同的列表):
使用函数
这是一个很好的选择,因为它可以更好地验证条件
j
,例如,如果没有选择预期值,则返回默认值。通过使用字典
它是从以有效选项为键的字典中直接分配的,
KeyError
如果您使用任何j
未考虑的值,则将发出 a ,除非您使用以下方法访问字典get()
:从字面上看,正如你所问的那样,这是不可能的。尽管如此,还是有几种方法可以在 Python 中做一些非常相似的事情。第一个是所谓的 Coalescence Operators,它们的使用方式如下:
评价如下。如果第一项/变量为真,则为变量分配第一项/变量。如果第一项/变量为假,则为变量分配第二项/变量。请注意,仅评估第一项/变量。
第二个是三元运算符,非常相似。您必须按如下方式使用它:
这样,默认值是您指示的列表,当条件满足时,当条件不满足时,变量取值
None
。正如我所说,它不完全是在分配中执行 if,而是评估分配。这是一种不寻常的方式,但它最接近您的问题。我想你可以以某种方式以这两种方式之一嵌套操作。由于您可能正在研究达到最终目标的方法,因此我建议您按照Patricio 的回答所表明的那样通过函数来完成。
您可以在您的 Python 版本的官方文档中查看有关这些运算符的更多信息。并且也在这个英文网站的问题中。