【问题标题】:Will Python's "in" keyword ever return True for an empty list?Python 的“in”关键字会为空列表返回 True 吗?
【发布时间】:2019-11-20 22:33:43
【问题描述】:

简单地说,是否有任何值x 在 Python 中适用于以下内容?

(x in []) == True

这是一个基本问题,但否定答案必须耗尽所有可能性:即,“没有任何类型和任何给定类型的常量,使得 x in [] 返回值 True。”然而,证明或反驳这种详尽无遗可能非常简单。

很容易测试各种值,正如预期的那样,是不是空列表的成员:

>>> None in []
False
>>> False in []
False
>>> [] in []
False
>>> "" in []
False
>>> {} in []
False

不是是这样的吗?

【问题讨论】:

  • 不,in 永远不会在运算符的右手是空列表的情况下返回 True。我并不是要粗鲁,但线索就在名称中,一个空列表中没有任何“内容”
  • 看起来很简单,您可以简单地尝试一下,并且您必须考虑一些场景:那么您为什么不尝试一下呢?
  • @barny 您不能使用该方法来证明是否定的。它只会告诉你,它不会为你尝试的值返回 True,可能有一些你没有想到的东西。
  • 这个问题纯粹是出于教育原因吗?
  • @barny 如果您正在尝试编写防弹代码,或者您正在尝试编写测试用例,您需要知道极端情况是什么,以便您可以防止它们或测试它该代码适用于他们。如果您不确定他们是什么,寻求帮助似乎是完全合理的。

标签: python list keyword empty-list


【解决方案1】:

你可以创建一个list 的子类,虽然我不知道你为什么会这样做

class Foo(list):
    def __in__(self, bar):
        return True

bar = Foo()
None in l

【讨论】:

  • 最后一行不应该是None in bar吗?
  • 重点不是要找到“绕过”in 关键字的数据结构。请参阅我在原始帖子下的评论。
猜你喜欢
  • 1970-01-01
  • 2017-07-29
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
  • 2019-12-20
  • 2012-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多