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

您所在的位置:网站首页 li是啥 python中sort()函数的key参数用法

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

#python中sort()函数的key参数用法| 来源: 网络整理| 查看: 265

今天在学习匿名函数lambda的时候遇到了一个没怎么想明白的问题。

strings = ['foo', 'card', 'bar', 'aaaa', 'abab'] # 根据字符串中不同字母的数量对一个字符串集合进行排序 strings.sort(key=lambda x: len(set(list(x))))

上面strings输出的结果为:[‘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维排序 def fun(li): return li[1] # 这时将函数fun传递给参数key 得出结果 li.sort(key=fun) print(li) # [[1, 1], [2, 4], [1, 5], [1, 7]]

我们可以发现好像是li中每个子元素的第二个数进行排序。 这就是key参数的作用,传入了key参数的sort()函数对li中的每个子元素[1,7],[1,5],[2,4],[1,1]都执行了fun()函数,返回它们的第1个数,分别为7,5,4,1。然后再排序得到1,4,5,7。使的出的结果对本来的li进行排序最后就得到了[[1,1],[2,4],[1,5],[1,7]]。 上述用lambda可以表示为:li.sort(key=lambda li: li[1]),这里的后面两个li是变量名,可以随意取如li.sort(key=lambda x: x[1]) 最后我们再来解释一下这句:

# 根据字符串中不同字母的数量对一个字符串集合进行排序 strings.sort(key=lambda x: len(set(list(x))))

按照字符串不同字母的数量对一个字符串集合进行排序,字符串不同字母的数量,可以想到利用set集合的不重复性,于是想到利用len函数求出set集合的长度,再按照长度进行排序即可。这里赋值给x的就是strings中的每一个元素(key参数的作用)。 好了,就介绍到这,希望大家有所收获~



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3