构造一个大于任何字符串的对象

NPE*_*NPE 5 python string comparison python-3.x sentinel

在 Python 3 中,我有一个字符串列表,并且发现能够附加一个比较大于列表中所有元素的哨兵很有用。

有没有一种简单的方法来构造这样的对象?

我可以定义一个类,可能是子类化str,但感觉应该有一种更简单的方法。

为了使这有助于简化我的算法,我需要提前执行此操作,然后才能知道列表中包含的字符串将是什么(因此它不能是这些字符串的函数)。

Car*_*ate 4

这是一种 na\xc3\xafve 答案,但是当您处理数字并需要一个哨兵值进行比较时,使用特定数字类型可以容纳的最大(或最小)数字并不罕见。

\n

Python 字符串按字典顺序进行比较,因此要创建“最大字符串”,您只需创建一个“最大字符”的长字符串:

\n
MAX_CHAR = chr(sys.maxunicode)\n\n# One million is entirely arbitrary here.\n# It should ideally be 1 + the length of the longest possible string that you'll compare against \nMAX_STRING = MAX_CHAR * int(1e6)\n
Run Code Online (Sandbox Code Playgroud)\n

除非有我不知道的奇怪的极端情况,否则MAX_STRING现在应该被认为大于任何其他字符串(除了它本身);前提是时间足够长。

\n

  • @KellyBundy,我很长一段时间,因为他们有一个以“\U0010ffff”字符开头的字符串。 (2认同)