因此,在 Python 中,字符串具有固有的顺序;
>>>'A' < 'B' < 'C'
True
>>>"angler" < "beta fish" < "coleocanth"
True
大多数消息来源都说 Python 中的字符串是按 ASCII 代码排序的 - 但这显然是无稽之谈,因为 Python 3 字符串是 Unicode。
显然,A、B、C…有一个定义的顺序,并且其他语言大概也有类似的字母顺序。
但是你如何排序,比如“♳”、“▧”和“ⵞ”?更重要的是,如何订购 A、𝐀、𝐴、𝑨、𝒜、𝓐、𝔄、𝔸、𝖠、𝗔、𝘈、𝙰、🄐、🅐、🅰、🇦、A 和 ş ?
我假设它会回退到比较 Unicode 代码点;这将是最简单的,似乎是一个合理的默认值,但它也建议,例如,“3/4”<“⅐”<“↉”和“⓿”>“⓵”>“⒌”>“⑽” ' > '⑮',以及“A”>“C”(这是一个全角 A),这看起来有点……不符合 Python 风格,即使它是一个非常奇怪的边缘情况。
是否使用了更复杂的规则集,如果有,它们记录在哪里?它是实现定义的还是有标准?
最佳答案
来自docs (令人沮丧的是,文档中没有提到字符串类型):
Strings (instances of
str
) compare lexicographically using the numerical Unicode code points (the result of the built-in functionord()
) of their characters.
这是规范性的,并且对于实现来说是准确的。可以查看Python 3.6.3字符串比较的实现here .
关于python - Python 字符串比较_真正_是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46840092/