【问题标题】:How to compare multiple variables to the same value?如何将多个变量与相同的值进行比较?
【发布时间】:2012-01-28 06:52:29
【问题描述】:

我正在使用 Python,我想要一个包含许多变量的 if 语句。

如:

if A, B, C, and D >= 2:
    print (A, B, C, and D)

我意识到这不是正确的语法,而这正是我要问的问题——对于这种if 语句,正确的 Python 语法是什么?

【问题讨论】:

标签: python


【解决方案1】:

您想测试all 变量的条件:

if all(x >= 2 for x in (A, B, C, D)):
    print(A, B, C, D)

如果您正在测试具有相同条件的长变量列表,这应该会有所帮助。


如果您需要检查:

if A, B, C, or D >= 2:

然后你想测试一个条件any的变量:

if any(x >= 2 for x in (A, B, C, D)):
    print(A, B, C, D)

【讨论】:

    【解决方案2】:

    另一个想法:

    if min(A, B, C, D) >= 2:
        print A, B, C, D
    

    【讨论】:

    • 它适用于这种特殊情况,但一般来说,您不能一次比较多个变量的相同条件
    • min 意思是:找出括号之间所有数字中的最小值。如果即使最小值大于或等于 2,我们也可以得出结论,所有变量都大于或等于 2
    • 哦,我现在明白了!我现在知道凌波鹏在说什么了!感谢您的帮助!
    • min(...) 不会短路,而all(...) 会
    • @bendl:一旦知道结果,它就会停止评估。
    【解决方案3】:

    我可能会这样写

    v = A, B, C, D
    if all(i >= 2 for i in v):
        print v
    

    【讨论】:

    • 谢谢!为了澄清你告诉我的意思......如果我有 A、B、C 和 D。我可以说 v = A、B、C、D(返回 - 无法让代码标签工作) if all(v >= 2): (RETURN) print (v)?
    • @TerriMoore:不,因为这将询问元组 (A, B, C, D) 是否大于或等于 2,而不是所有值是否 >= 2。对于技术在 python 2 中实际上不会引发异常的原因,它只会给出意想不到的结果,但它会在 python 3 中引发错误(应该如此)。
    • 我正在使用 python 3。“i in v”到底是什么?
    • @LimboPeng 的回答更直接一点,没有中间的 'v' 变量。
    • 好的,所以你推荐 Limbo 的答案而不是 DSM 的答案?
    【解决方案4】:

    如果您将十个变量视为这样的组,您可能希望将它们设为列表的元素、字典中的值或对象的属性。例如:

    my_dict = {'A': 1, 'B': 2, 'C': 3 }
    
    if all(x > 2 for x in my_dict.values()):
        print "They're all more than two!"
    

    【讨论】:

    • 不,这不是我想要在这里实现的。不过还是谢谢!
    【解决方案5】:

    根据您要完成的任务,将列表传递给函数可能会起作用。

    def foo(lst):
        for i in lst:
            if i < 2:
                return
        print lst
    

    【讨论】:

    • 糟糕!我刚刚发布了与您相同的答案。哈哈
    • 如果你能更详细地解释这是做什么的,我真的会帮助我。谢谢!
    • 你向函数传递了一个数字列表。对于列表中的每个项目,检查项目是否小于 2 - 如果项目小于 2,则函数“返回”(或退出)而不打印任何内容。继续检查列表中的每个项目。一旦检查了每个项目,并且没有项目导致函数返回/退出,我们知道所有项目都 >= 2,因此我们可以打印列表。
    【解决方案6】:

    怎么样:

    if A >= 2 and B >= 2 and C >= 2 and D >= 2:
        print A, B, C, D
    

    对于一般情况,没有更短的方法可以表明所有变量都必须满足相同的条件 - 除非您愿意将变量放在一个列表中,否则请查看一些其他答案。

    【讨论】:

    • 谢谢!我有 10 个变量,它们是不是需要更少的输入?
    • 如果您需要测试相同的条件(>= 2)并且所有变量都是数字,@Fred Larson 的答案是最短的解决方案(虽然一目了然有点难以理解)
    • 如果我需要做其他条件,帝斯曼提供的答案会是最好的吗?
    • 同样的事情:只有当所有变量的条件都相同时它才有效;否则你必须逐个测试每个变量,就像我的回答一样
    • 是的,我希望它们都单独针对相同的条件进行测试,而不是作为一个组,但我想将它们全部放入一个 if 语句中。
    【解决方案7】:

    除了她可能要求这个:

    if A >= 2 and B >= 2 and C >= 2 and D >= 2:
    

    【讨论】:

      猜你喜欢
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多