当前位置: 首页 > 面试题库 >

如何在Python中实现list类的__contains__方法?

松刚豪
2023-03-14
问题内容

假设我定义了以下变量:

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)



 类似资料:
  • 问题内容: 我知道PHP或Java的虚拟方法。 如何在Python中实现它们? 还是我要在抽象类中定义一个空方法并覆盖它? 问题答案: 当然,您甚至不必在基类中定义方法。在Python中,方法要比虚拟方法更好-它们是完全动态的,因为Python中的输入是 鸭子输入 。 而且在Python中,甚至不必从通用基类派生该行为即可- 您可以免费获得它。就是说,一些程序员更喜欢以更严格的方式定义他们的类层次

  • 问题内容: 如您所知,如果子类未实现未实现的方法,则eclipse提供了一种不错的方法来实现它们。有什么办法可以将其应用于所有子类吗? 我的问题是,当每个孩子班级有50个时,我必须这样做。我将不胜感激任何帮助。 问题答案: 在包资源管理器中选择顶级包。转到“问题”视图。错误列表应为“类型Foo必须实现继承的抽象方法Parent.foo()”(对于给定的类/方法名称)。右键单击错误,选择“快速修复”

  • 我有接口 然后创建了一个类,并实现了 IDE没有显示任何错误,但当我编译时,会出现以下错误 null 并且编译时错误已经消失。

  • 问题内容: 我以前的编程中,代码段仅用于调试目的(记录命令等)。通过使用预处理程序指令,可以完全禁用这些语句以进行生产,如下所示: 做类似的事情的最好方法是什么? 问题答案: 如果只想禁用日志记录方法,请使用该模块。如果日志级别设置为排除调试语句,那么它将非常接近无操作(它仅检查日志级别并返回而不插入日志字符串)。 如果要在特定条件下以字节码编译时实际删除代码块,则唯一的选择是相当神秘的全局变量。

  • 我想做的是,我正在制作一个具有相同uid的所有文档的未来列表,然后使用FutureBuilder制作一个ListView。 给我错误的部分是, 这里是错误, 非常感谢。

  • 本文向大家介绍在python中实现对list求和及求积,包括了在python中实现对list求和及求积的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇在python中实现对list求和及求积就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。