import heapq
mystrings = [ 'b', 'c', 'a', 'bravo', 'alpha', 'charlie' ]
maxheap = [contra_string(s) for s in mystrings]
heapq.heapify(maxheap)
print [heapq.heappop(maxheap) for n in range(len(maxheap))]
# prints "['charlie', 'c', 'bravo', 'b', 'alpha', 'a']"
original_strings_in_reverse_order = [heapq.heappop(maxheap).normal() for n in range(len(maxheap))]
print type(original_strings_in_reverse_order[0])
# prints "<type 'str'>"
通过使字符值为负来反转字符串?全小写字符串的示例键:
您可以使用
heapq
从字符串构造maxheap来构建一个类似字符串的对象的minheap,这些对象的字符内容与原始字符串相同,但其比较运算符(以及它们的排序顺序)产生的结果与普通字符串对象相反。如果我们称这个对象为contra_string
,那么它的定义如下:它的用法如下:
请记住,堆中的对象是
contra_string
的实例,因此如果在从堆中弹出对象之后在比较中使用它们,它们的行为会很奇怪。如果在提取对象之后需要对这些对象执行任何涉及自然有序字符串比较的操作,那么可以使用contra_string
上的normal
方法恢复原始的普通字符串,当然,使用这些原始字符串的比较将正常进行。这看起来像:相关问题 更多 >
编程相关推荐