如何在Python中实现list类的__contains__方法?
假设我定义了以下变量:
mode = "access"allowed_modes = ["access", "read", "write"]
我目前有一个类型检查语句
assert any(mode == allowed_mode for allowed_mode in allowed_modes)
但是,看来我可以简单地用
assert mode in allowed_modes
根据ThiefMaster在Python列表类__contains__方法功能中的回答,这两个应该等效。确实是这样吗?我如何通过查找Python的源代码轻松地验证这一点?
回答:
不,它们不相等。例如:
>>> mode = float('nan')>>> allowed_modes = [mode]
>>> any(mode == allowed_mode for allowed_mode in allowed_modes)
False
>>> mode in allowed_modes
True
有关更多详细信息,请参阅成员资格测试操作,包括以下语句:
对于list,tuple,set,frozenset,dict或collections.deque等容器类型,该表达式
x in y
等效于any(x
is e or x == e for e in y)。
以上是 如何在Python中实现list类的__contains__方法? 的全部内容, 来源链接: utcz.com/qa/433141.html