首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何比较memoryview对象?

如何比较memoryview对象?
EN

Stack Overflow用户
提问于 2012-11-26 19:08:25
回答 1查看 937关注 0票数 3

有人对下面的代码有什么想法吗?

代码语言:javascript
运行
复制
>>> memoryview("abc") < memoryview("bca")
True
>>> memoryview("abc") > memoryview("bca")
True
>>> memoryview("abc") = memoryview("bca")
False

如何在不使用tobytes获取字符串副本的情况下比较memoryview对象的字符串?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-26 19:34:05

memoryview()对象没有定义任何排序,它的__lt____gt__方法返回NotImplemented单例,表明它们不支持排序:

代码语言:javascript
运行
复制
>>> memoryview("abc").__lt__(memoryview('bca'))
NotImplemented
>>> memoryview("abc").__gt__(memoryview('bca'))
NotImplemented

因此,Python2使用内部一致的顺序对这些数据进行排序。在Python3中,当您尝试使用<>操作符时,将引发TypeError

在Python2中,当对象不支持排序时,它们会按它们的内存地址排序(对象本身,而不是内存视图所指向的‘内存’);有关发生的更多细节,请参阅Custom class ordering: no error thrown, what is Python testing for?

仅支持相等性和不等性测试:

代码语言:javascript
运行
复制
>>> memoryview("abc").__eq__(memoryview('bca'))
False
>>> memoryview("abc").__eq__(memoryview('abc'))
True
>>> memoryview("abc").__ne__(memoryview('abc'))
False
>>> memoryview("abc").__ne__(memoryview('bca'))
True

您唯一的选择是使用.tobytes().tolist()

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13563596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档