Python 2.7如何比较列表中的项目

Python 2.7如何比较列表中的项目,第1张

Python 2.7如何比较列表中的项目

==
如果项目相同(
is
),CPython的基础实现将跳过列表中项目的相等性检查()。

CPython使用此作为优化,假设身份暗示平等。

这记录在PyObject_RichCompareBool中,用于比较项目:

注意:如果o1和o2是同一对象,则PyObject_RichCompareBool()对于Py_EQ将始终返回1,对于Py_NE将始终返回0。

从listobject.c实现中:

for (i = 0; i < Py_SIZE(vl) && i < Py_SIZE(wl); i++) {    int k = PyObject_RichCompareBool(vl->ob_item[i],    wl->ob_item[i], Py_EQ);    // k is 1 if objects are the same    // because of RichCmopareBool's behaviour    if (k < 0)        return NULL;    if (!k)        break;}

正如你可以看到,只要

RichCompareBool
1
True
)的项目不检查。

从object.c的实现

PyObject_RichCompareBool

if (v == w) {    if (op == Py_EQ)        return 1;    else if (op == Py_NE)        return 0;}// ... actually deep-compare objects

要覆盖此内容,您必须手动比较各项。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5617571.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存