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条件变量设置的主要内容,如果未能解决你的问题,请参考以下文章

Python 条件赋值运算符

27 python 初学(信号量条件变量同步条件队列)

python基础 - 条件变量

python多线程编程5: 条件变量同步-乾颐堂

python threading之条件变量同步

python笔记11-多线程之Condition(条件变量)