2024-04-18 00:40:36 发布
网友
例如,如果我有字符串'4K892',我把它做成一个列表,每个字符都是分开的。如何使用此顺序“23456789TJQKA”打印最高字符
伪代码:
list = [4, K, 8, 9, 2] Highestcharacter(list) = 'K'
我会使用查找词典:
class Hand: def __init__(self, hand): self.ranking = {char: index for index, char in enumerate("23456789TJQKA")} self.hand = hand def sort(self): self.hand.sort(key=lambda x: self.ranking[x]) def __str__(self): return str(self.hand) h = Hand(['4', 'K', '8', '9', '2']) print(h) # ['4', 'K', '8', '9', '2'] h.sort() print(h) # ['2', '4', '8', '9', 'K']
展示max(list,key)函数背后的算法
从orderd的末尾开始检查伪列表中的每个字符-列表。每当您进行匹配时,您将结果保存在第三个数组中。它们较高的结果与伪列表的较高字符位于同一单元格中
例如,可以使用max函数的键参数
慢速版本:
order = '23456789TJQKA' result = max('4K892', key=order.index) print(result)
快速版本:
order = '23456789TJQKA' lookup = {v : i for i, v in enumerate(order)} result = max('4K892', key=lookup.get) print(result)
注意,fast和slow表示函数的复杂性,slow版本是O(n*2),fast版本是O(n)。你知道吗
O(n*2)
O(n)
我会使用查找词典:
展示max(list,key)函数背后的算法
从orderd的末尾开始检查伪列表中的每个字符-列表。每当您进行匹配时,您将结果保存在第三个数组中。它们较高的结果与伪列表的较高字符位于同一单元格中
例如,可以使用max函数的键参数
慢速版本:
快速版本:
注意,fast和slow表示函数的复杂性,slow版本是
O(n*2)
,fast版本是O(n)
。你知道吗相关问题 更多 >
编程相关推荐