Python条件变量设置
Posted
技术标签:
【中文标题】Python条件变量设置【英文标题】:Python Conditional Variable Setting 【发布时间】:2011-12-28 07:17:36 【问题描述】:由于某种原因,我不记得如何做到这一点 - 我相信有一种方法可以在 Python 中设置变量,如果条件为真?我的意思是:
value = 'Test' if 1 == 1
如果条件 (1 == 1) 为真,它希望将 value 设置为“测试”。然后,我将测试多个条件以设置不同的变量,如下所示:
value = ('test' if 1 == 1, 'testtwo' if 2 == 2)
仅针对几个条件以此类推。这可能吗?
【问题讨论】:
它被称为Ternary Operator 【参考方案1】:这是最接近您正在寻找的东西:
value = 'Test' if 1 == 1 else 'NoTest'
否则,就没有什么了。
【讨论】:
啊,我错过了“else”,它并没有告诉我我需要一个。我想我应该知道得更好,因为如果条件不相等,它就不会被设置为任何东西。谢谢! 如果不明显,您可以链接这些(如value = v1 if c1 else v2 if c2 else v3
)。另一种方法是使用字典。
提示:这里必须使用“else”。但是如果变量已经存在,并且你不希望它在条件不满足的情况下改变,就让它等于它自己:value = 'Test' if 1 == 1 else value
【参考方案2】:
你也可以这样做:
value = (1 == 1 and 'test') or (2 == 2 and 'testtwo') or 'nope!'
我更喜欢这种方式:D
【讨论】:
看起来不错,但这不会像我们想要的那样工作:value = (1 == 1 and '') or (2 == 2 and 'testtwo') or 'nope!'
【参考方案3】:
value = [1, 2][1 == 1]
;)
...好吧,我想这也可以:
value = ['none true', 'one true', 'both true'][(1 == 1) + (2 == 2)]
至少不是很好的编程实践或可读代码,但有趣且紧凑。 Python 将布尔值视为数字,因此 True 为 1,False 为 0。[1, 2][True] = 2
、[1, 2][False] = 1
和 [1, 2, 3][True + True] = 3
【讨论】:
【参考方案4】:不太明显但好看的术语:
value = ('No Test', 'Test')[1 == 1]
print(value) # prints 'Test'
【讨论】:
让我们明白这一点。我们为人类编码。不适用于机器。机器可以读取任何不是错误的东西,好吧。但人类做不到。是我们犯了错误,所以我们必须让我们更容易。 :) 我其实很喜欢这个。这是可以理解的(而且我恰好是人类)。感谢分享这个额外的花絮。干杯!以上是关于Python条件变量设置的主要内容,如果未能解决你的问题,请参考以下文章