【问题标题】:Why "a in b == c" is equal to "(a in b) and (b == c)" [duplicate]为什么“b中的a == c”等于“(b中的a)和(b == c)”[重复]
【发布时间】:2021-03-24 04:06:09
【问题描述】:

我发现评估a in b == c 的结果总是等于(a in b) and (b == c)。谁能解释一下?

这是一个在 Python3.7 上运行的示例:

>>>> "123" in "1234" == "1234"
True

>>>> "123" in "1234" != "1234"
False

>>>> "123" in "1234" != "12345"
True

>>>> "123" in "1234" == "12345"
False

>>>> "888" in "1234" == "1234"
False

【问题讨论】:

  • 它的工作原理与1 < 2 < 3完全相同。
  • @Selcuk 被假定的骗子非常不适合这个问题。
  • @hobbs 我不同意。这个问题证实了这一发现,答案解释了它是如何在内部工作的。如果您提出建议,我很乐意在重复项列表中添加另一个重复项。
  • 好问题。我没有意识到链接会变得多么奇怪!
  • 为什么这些表达式是等价的?因为 Python 语言设计者决定他们会这样做。仅此而已。

标签: python


【解决方案1】:

Comparisons

比较可以任意链接,例如,x 等价于 x ,除了 y 只计算一次(但在这两种情况下 z 都是当发现 x

其中in也是一个比较运算符

另请参阅operator precedence 部分,了解in 和相等性检查同时发生,从左到右

【讨论】:

    猜你喜欢
    • 2010-12-08
    • 2011-08-01
    • 2014-03-29
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多