【问题标题】:Python Conditional Variable SettingPython条件变量设置
【发布时间】:2011-12-28 07:17:36
【问题描述】:

由于某种原因,我不记得如何做到这一点 - 我相信有一种方法可以在 Python 中设置变量,如果条件为真?我的意思是:

 value = 'Test' if 1 == 1

如果条件 (1 == 1) 为真,它希望将 value 设置为“测试”。然后,我将测试多个条件以设置不同的变量,如下所示:

 value = ('test' if 1 == 1, 'testtwo' if 2 == 2)

仅针对几个条件以此类推。这可能吗?

【问题讨论】:

标签: python variables if-statement conditional-statements


【解决方案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'
    

    【讨论】:

    • 让我们明白这一点。我们为人类编码。不适用于机器。机器可以读取任何不是错误的东西,好吧。但人类做不到。是我们犯了错误,所以我们必须让我们更容易。 :)
    • 我其实很喜欢这个。这是可以理解的(而且我恰好是人类)。感谢分享这个额外的花絮。干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    • 2013-06-13
    • 2022-01-17
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多