Python字符串比较结果与sys.getsizeof()值不符问题咨询
解答:Python字符串比较的逻辑误区
嘿,我来帮你搞清楚这个问题的核心所在~
首先要明确一个关键误区:你用sys.getsizeof()拿到的数值,和字符串比较的结果完全没有关系!这个函数返回的是整个字符串对象在内存中的总占用大小,其中包含了Python对象的底层结构开销,不是字符串内容的长度或者比较依据,所以S5的29字节、S6的33字节只是内存占用差异,和两者的大小比较逻辑无关。
Python字符串比较的真实规则
Python中字符串是按字符的Unicode码点(ASCII是Unicode的子集)进行逐字符字典序比较的,步骤是这样的:
- 从两个字符串的第一个字符开始逐一对比;
- 如果某个位置的字符码点不同,直接根据这个字符的大小确定整个字符串的大小关系;
- 如果前面的字符都完全匹配,那么更短的字符串被认为更小。
回到你的例子:
- S5 =
"ants",字符依次是a(97)、n(110)、t(116)、s(115) - S6 =
"anteater",字符依次是a(97)、n(110)、t(116)、e(101)……
前三个字符完全一致,到第四个字符时,s的ASCII码是115,e是101,显然115 > 101,所以"ants" > "anteater",自然S5 < S6的结果就是False了。
举个额外的例子验证:如果是S5 = "ant",那么"ant" < "anteater"会返回True——因为前三个字符匹配,而"ant"更短。
内容的提问来源于stack exchange,提问作者Özgür Coşkuner
相关产品推荐
相关产品推荐

