> memoryview("abc") > memoryview("bca") True >>> memoryview("ab-6ren">
gpt4 book ai didi

python - 如何比较内存 View 对象?

转载 作者:行者123 更新时间:2023-12-04 04:09:29 24 4
gpt4 key购买 nike

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

>>> memoryview("abc") < memoryview("bca")
True
>>> memoryview("abc") > memoryview("bca")
True
>>> memoryview("abc") = memoryview("bca")
False

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

最佳答案

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

>>> memoryview("abc").__lt__(memoryview('bca'))
NotImplemented
>>> memoryview("abc").__gt__(memoryview('bca'))
NotImplemented

因此,Python 2 使用内部一致的顺序对这些进行排序。在 Python 3 中,当您尝试使用 TypeError< 运算符时,将引发 >

在 python 2 中,当对象不支持排序时,它们将按内存地址排序(对于对象本身,而不是 memoryview 指向的“内存”);有关发生的情况的更多详细信息,请参阅 Custom class ordering: no error thrown, what is Python testing for?

仅支持相等和不等测试:

>>> 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()

关于python - 如何比较内存 View 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13563596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com