是否有Pythonic和有效的方法来检查Numpy数组是否包含给定行的至少一个实例?"有效"是指它在找到第一个匹配行时终止,而不是遍历整个数组,即使已经找到了结果.
使用Python数组,这可以非常干净地完成if row in array:,但是这不像我对Numpy数组所期望的那样工作,如下所示.
使用Python数组:
>>> a = [[1,2],[10,20],[100,200]]
>>> [1,2] in a
True
>>> [1,20] in a
False
Run Code Online (Sandbox Code Playgroud)
但是Numpy数组给出了不同的,而且看起来很奇怪的结果.(__contains__方法ndarray似乎没有记录.)
>>> a = np.array([[1,2],[10,20],[100,200]])
>>> np.array([1,2]) in a
True
>>> np.array([1,20]) in a
True
>>> np.array([1,42]) in a
True
>>> np.array([42,1]) in a
False
Run Code Online (Sandbox Code Playgroud) 假设我定义了以下变量:
mode = "access"
allowed_modes = ["access", "read", "write"]
Run Code Online (Sandbox Code Playgroud)
我目前有一个类型检查语句
assert any(mode == allowed_mode for allowed_mode in allowed_modes)
Run Code Online (Sandbox Code Playgroud)
但是,似乎我可以简单地替换它
assert mode in allowed_modes
Run Code Online (Sandbox Code Playgroud)
根据ThiefMaster在Python List Class __contains__ Method Functionality中的回答,这两个应该是等价的.确实如此吗?我怎样才能通过查找Python的源代码轻松验证这一点?