当前位置: 首页 > 后端技术 > Python

python中sort()函数的key参数的用法(转载)

时间:2023-03-26 18:14:24 Python

今天在学习匿名函数lambda的时候,遇到一个不太明白的问题。strings=['foo','card','bar','aaaa','abab']#根据字符串中不同字母的个数对一组字符串进行排序strings.sort(key=lambdax:len(set(list(x))))abovestrings输出的结果是:['aaaa','foo','abab','bar','card']结果很清楚,但是过程不清楚开始。后来百度了一下,参考了别人的分析才明白过来。主要是理解sort()函数中参数key的含义:key参数传递给一个函数,这个函数指定了可迭代对象中的每一个元素按照函数进行排序例如:#这里,我们来看一个不带key参数的sort()函数,结果大家很容易就知道了li=[[1,7],[1,5],[2,4],[1,1]]li.sort()print(li)#[[1,1],[1,5],[1,7],[2,4]]默认先按0维排序再按1维排序deffun(li):returnli[1]#此时函数Fun传给参数key得到结果li.sort(key=fun)print(li)#[[1,1],[2,4],[1,5],[1,7]]我们可以发现,它看起来像是li中每个子元素的第2个要排序的数。这就是关键参数的作用。key参数传入的sort()函数执行li中的每个子元素[1,7]、[1,5]、[2,4]、[1,1]fun()函数返回它们的第一个数,分别为7、5、4和1。然后排序得到1,4,5,7。用得到的结果对原始li进行排序,最终得到[[1,1],[2,4],[1,5],[1,7]]。上面的lambda可以表示为:li.sort(key=lambdali:li[1]),其中最后两个li是变量名,可以看做li.sort(key=lambdax:x[1])最后再解释一下这句话:#根据字符串中不同字母的个数对一组字符串进行排序strings.sort(key=lambdax:len(set(list(x))))根据的个数字符串中不同字母的数量对一个字符串集合进行排序,字符串中不同字母的个数,可以想到使用集合的不重复集合,所以可以使用len函数求集合的长度,然后根据长度排序。这里赋给x的值是strings中的每一个元素(key参数的作用)。好了,介绍就到这里,希望大家有所收获~