python sorted key,python sort函数的key
Python sorted list.sort()在Python中,sorted和list.sort背后的算法是Timsort算法。它是一种自适应算法,根据原始数据的序列特征交替使用插入排序或合并排序,取得了最佳的效率。这种算法被证明是非常有效的,因为来自真实世界的数据通常具有一定的序列特征。Timsort在2002年首次在CPython中使用。
关键参数很精彩。关键参数是一个伟大的设计。能让事情变得简单高效。很简单,因为你只需要提供一个单参数函数来提取或计算一个值,作为比较大小的标准。在排序时,python将基于两个键,但该阶段的计算发生在C语言级别,这将比调用用户定义的python比较函数更快。
因此,使用排序函数效率更高。
例如,下面的代码是对一副扑克牌进行排序。
从随机导入选择牌=collections.named tuple (card ,[rank , suit]) #定义牌的类型,有两个属性:等级和牌。法国牌组:ranks=[str (n) for n in range (2,11)] list(JQKA )花色=黑桃方块梅花红心。split()def _ _ init _ _(self):self . cards=[Card(rank,suit)for suit in self . suits for rank in self . ranks]def _ _ len _ _(self):return len(self . cards)def _ _ getitem _ _(self,position):return self . cards[position]beer _ Card=Card( 7 , diamond )Print(beer _ Card)French=French deck()Print(French . cards))Print(len(French[0])Print(French[-1])Print(choice(French))Printranks.index(卡片。rank)返回rank _ value * 4 suit _ value[卡。花色] for card in sorted (French,key=patches _ high): print (card)扑克牌有两个属性,一个是排位,一个是花色(。
首先定义init方法来初始化扑克牌。
然后定义len法计算扑克牌的长度。
然后定义getitem方法返回下标,可以最大程度避免推倒重来。
定义了排序函数黑桃_高。根据扑克牌的等级和花色确定返回的键,然后排序返回一个python迭代器。
从结果可以看出,扑克牌是顺序输出的。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。