【问题标题】:checking whether a string exists in a list检查列表中是否存在字符串
【发布时间】:2020-03-24 20:53:38
【问题描述】:

我只是想弄清楚为什么下面的简单代码没有返回任何东西,即使我几乎肯定我是正确的:

mike = [1,2,3,3,"error"]

if "error" in mike == True:
    print(True)

这不返回任何内容。为什么?

【问题讨论】:

  • 因为mike == True 是假的。
  • 我该如何正确解决这样的问题?
  • @G.Anderson 不,也不是这样。
  • @G.Anderson 有一个给定的运算符优先级。与方向无关
  • @yatu 不过它们的优先级相同。

标签: python string list memory


【解决方案1】:

这是operator chaining 的结果,它适用于比较运算符in, not in, is, is not, <, <=, >, >=, !=, ==。所以

'error' in mike == True

实际上被评估为:

'error' in mike and mike == True

后者是假的。运算符链对于0 < x < 5 之类的东西更有用。

你可能只是想要

'error' in mike

【讨论】:

    【解决方案2】:

    您可以使用括号按您想要的顺序强制评估:

    if ("error" in mike) ==True:
        print(True)
    

    或者,更pythonly:

    if "error" in mike:
        print(True)
    

    【讨论】:

    • 但这并不能回答问题(“为什么?”)。
    • @HeapOverflow 很公平,我创建这个答案是为了提供一个解决方案作为占位符,但是每次我尝试写一个“为什么”的解释时,我都意识到我离目标更远了。现在研究兔子洞以获得正确的单词。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 2013-01-09
    • 1970-01-01
    • 2013-04-29
    • 2017-02-28
    • 1970-01-01
    相关资源
    最近更新 更多