栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/611448.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号