【问题标题】:Multiple 'In' operator in python [duplicate]python中的多个'In'运算符[重复]
【发布时间】:2018-11-11 07:04:15
【问题描述】:
arr = [1, True, 'a', 2]
print('a' in arr in arr) # False

你能解释一下为什么这段代码会输出'False'吗?

问题已结束。

@KlausD 的回答:实际上它是一个比较运算符链接,将被解释为('a' in arr) and (arr in arr)

【问题讨论】:

  • 随便'a' in arr
  • 我相信您期待True,因为您将'a' in arr in arr 视为True in arr
  • @Austin,只需运行此代码。它输出 False。
  • 请解释您的预期结果是什么,以及为什么。这个问题目前还不清楚
  • 参见例如here 获取有关运算符链接的信息。

标签: python python-3.x operators in-operator


【解决方案1】:

它是False,因为'a'in 'arr''arr' 不是in 'arr'

意思是'arr' 本身不能。

【讨论】:

    【解决方案2】:

    我相信这就是你想要做的:

    arr = [1, True, 'a', 2]
    print( 'a' in arr)
    

    输出:

    True
    

    或者这个:

    arr = [1, True, 'a', 2]
    print(bool(['a' in arr]) in arr)
    

    输出:

    True
    

    【讨论】:

    • 您可以只使用print(('a' in arr) in arr) 而不是print(bool(['a' in arr]) in arr),但这不会检查'a' 是否在arr 中。它检查True 是否是!将 arr 更改为 arr = ['a', 2] 并验证
    • 问题不清楚。我假设他想从 arr 中的“a”获取输出为 True,然后检查 arr 中是否为 True。
    • 合法。我以为OP只想检查'a' in arr。无论哪种方式,实际检查的是如果arr in arr,然后如果'a'在结果中:-P
    • bool(['a' in arr]) 几乎肯定不是提问者想要的任何部分,考虑到它在一个元素列表上调用bool,无论是否@,它都会返回True 987654336@ 在arr
    【解决方案3】:
    1. print('a' in arr in arr) // False 被解释为 print('a' in arr in arr) // 0,它会抛出 ZeroDivisionError: integer division or modulo by zero 错误。如果您要注释掉False,请使用"#",而不是"//"(例如print('a' in arr in arr) # False
    2. 'a' in arr in arr从右到左读取[1]:检查arr in arr是否为(假),再检查是否'a' in False(假)
    3. 使用@Klaus D 的有用评论 - 由于运算符链接,print('a' in arr in arr) 被评估为print(('a' in arr) and (arr in arr))。这又被处理成print(True and False) -> print(False)

    要检查'a' 是否在arr 中,只需检查print('a' in arr) # prints True

    [1] 嗯,不完全是。从 [In which order is an if statement evaluated in Python] 中可以看出,评估是从右到左的,所以这就是实际发生的情况:(1)检查“a”是否在“某物”中。 (2) 通过检查 arr in arr 来评估这个“东西”。 (3)使用所说的东西的reault(可悲的是Falsearr不是它的成员)并检查'a'是否在其中(意思是,检查'a' in True,这又是,是假的[1]

    【讨论】:

    • 1.是的,我很抱歉。必须有一个“#”
    • 2. 'a' in False 表达不正确。它会抛出错误。
    • 1.实际上它是一个比较运算符链接,将被解释为('a' in arr) and (arr in arr)
    • @KlausD,你是对的。谢啦。这是我问题的正确答案。
    猜你喜欢
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    相关资源
    最近更新 更多