python中列表排序方法,python函数排序输出

  python中列表排序方法,python函数排序输出

  Python排序函数完美体现了Python语言的简单性。对于List对象,我们可以直接调用sort()函数(这里调用 method 更合适)进行排序,而对于其他迭代对象(比如set、dict),我们可以使用更灵活的sort()函数。

  一、List的sort()函数

  Python builtins.py源文件将sort()函数定义如下

  定义排序(self,key=None,reverse=False):

   L.sort(key=None,reverse=False) - None -稳定排序*就地*

  及格

  可以看到,sort()函数没有返回值,有两个参数。键表示行基础的功能;反转是指需要反转列表。默认值为False,表示升序。如果设置为True,则表示降序。

  Sort()的用法如下

  L=[1,2,7,4,3]

  L.sort()

  打印(左)

  #[1, 2, 3, 4, 7]

  让我们添加一些参数来看看,比如降序排序:

  L=[1,2,7,4,3]

  L.sort(reverse=True)

  打印(左)

  #[7, 4, 3, 2, 1]

  例如,我们想按键降序排序,这里我们使用匿名函数lambda:

  L=[1,2,7,4,3]

  l . sort(key=lambda x:x *(1))

  打印(左)

  #[7, 4, 3, 2, 1]

  当然,key还有很多用途。我们可以将其设置为内置函数或自定义函数,如绝对值函数:

  L=[-1,2,-7,4,3]

  L.sort(key=abs)

  打印(左)

  #[-1, 2, 3, 4, -7]

  Python3对key还有一个支持,就是通过functools模块的cmp_to_key函数,将传统的cmp函数改为key。这种方法类似于lambda函数,但是在比较的逻辑比较复杂的情况下更清晰,更容易维护。

  从功能工具导入cmp_to_key

  L=[-1,2,-7,4,3]

  定义cmp(a,b):

  如果abs(a) abs(b):

  返回-1

  否则:

  返回1

  L.sort(key=cmp_to_key(cmp))

  打印(左)

  二。已排序()

  Sorted函数比sort()函数更通用,sort()函数只能对列表进行排序。官方文件对此有详细解释:

  已排序(iterable,*,key=无,reverse=False)

  从iterable中的项目返回一个新的排序列表。

  sorted()的返回值属于列表类型。参数iterable指示一个iterable对象;*表示位置参数结束,后面的参数必须用关键字指定;reverse参数的用法和sort()完全一样。

  Sorted()的用法如下:

  L=[1,2,7,4,3]

  L1=已排序(L)

  印刷品(L1)

  #[1, 2, 3, 4, 7]

  reverse和key的用法就不单独说了。可以参考sort()。如果我们要排序的对象是一个集合,那么用法与列表排序相同:

  S={1,2,7,4,3}

  S1=已排序

  印刷品(S1)

  #[1, 2, 3, 4, 7]

  注意这个排序对象是set对象,结果是list对象(set对象没有顺序)。如果我们想实现一个更复杂的排序呢?例如,根据键值对字典进行排序,排序结果是键值对列表:

  Dict={a:2, b:3, c:7, d:4, e:1}

  L=sorted(Dict.items(),key=lambda x : x[1])

  打印(左)

  #[(e ,1),( a ,2),( b ,3),( d ,4),( c ,7)]

  给出Leetcode上的最后一个问题(按字符出现频率排序):

  给定一个字符串,请将字符串中的字符按出现频率降序排列。

  输入:

  “树”

  输出:

  额尔特

  解释:

  e出现了两次,R和T都只出现了一次。因此,“e”必须出现在“r”和“t”之前。此外,‘eetr’也是一个有效答案。

  通过使用排序函数,代码清晰易读:

  定义频率排序:

  d={}

  对于s中的I:

  d[i]=d.get(i,0) 1

  L=已排序(d.keys(),key=lambda x: d[x],reverse=True)

  s=

  对于L中的I:

  s=i * d[i]

  返回s

  注意,这里的d.keys()生成一个由键组成的iterable对象,而前面代码中的Dict.items()生成一个由键值对组成的iterable对象(这是一个Tuple对象)。

  关于Python排序函数的用法,本文就讲到这里。关于Python排序函数用法的更多信息,请搜索随机开发网之前的文章或者继续浏览下面的相关文章。希望你以后能支持随机开发网!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: