最佳答案
集合之间的比较由 function set_richcompare
in setobject.c
, line 1848 实现.您会看到相等性的实现如下:
如果集合的大小不同,则返回 false。
如果两个集合都经过哈希处理,并且哈希值不同,则返回 false。
调用
set_issubset
.
两个集合的子集测试如下所示:
while (set_next(so, &pos, &entry)) {
int rv = set_contains_entry((PySetObject *)other, entry);
if (rv == -1)
return NULL;
if (!rv)
Py_RETURN_FALSE;
}
Py_RETURN_TRUE;
您会发现它的工作原理是遍历第一组的所有元素,然后在另一组中查找每个元素。所以(除非有很多散列冲突)这与第一组的大小成线性关系。
关于python - 在 Python 中检查两个集合是否相等的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12390298/