这里顺便说一下sorted()和sort()的异同。

sort 是 list 中的方法,只能对列表排序;sorted 可以对所有可迭代对象进行排序。

list 的 sort 方法是对原列表进行操作,而内置函数 sorted 会返回一个新的 list,而不是对原对象的操作。

>>> help(sorted)
Help on built-in function sorted in module builtins:
sorted(iterable, key=None, reverse=False)
Return a new list containing all items from the iterable in ascending order.
A custom key function can be supplied to customize the sort order, and the reverse flag can be set to request the result in descending order.
>>> help(list.sort)
Help on method_descriptor:
sort(...)
L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*

两个函数的两个可选参数相同。

  • key 给定一个函数,用来处理比较对象,然后通过函数返回结果进行比较。默认为None,直接按第一列排序。
  • reverse 是一个布尔值,用来指定排序方向。reverse = True 表示降序 , reverse = False 表示升序(默认)。

用sorted排序之后,会返回一个新的list,不影响原来的list。

>>> nums = [4,9,3,2,1,5,6,8,7]
>>> sorted(nums)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> nums
[4, 9, 3, 2, 1, 5, 6, 8, 7]

用sort排序之后,原list被改变。

>>> nums = [4,9,3,2,1,5,6,8,7]
>>> nums.sort()
>>> nums
[1, 2, 3, 4, 5, 6, 7, 8, 9]

创建一个字典,并转换为元祖列表。

>>> d={'a': 10, 'b': 9, 'c': 11, 'd': 1, 'e': 5}
>>> L=list(d.items())
>>> L
[('a', 10), ('b', 9), ('c', 11), ('d', 1), ('e', 5)]

利用lambda函数指定用元祖中的第二个元素排序。

>>> sorted(L,key=lambda x:x[1])
[('d', 1), ('e', 5), ('b', 9), ('a', 10), ('c', 11)]

不指定排序key即key为none时,默认按第一列直接排序。

>>> sorted(L)
[('a', 10), ('b', 9), ('c', 11), ('d', 1), ('e', 5)]
>>> L
[('a', 10), ('b', 9), ('c', 11), ('d', 1), ('e', 5)]

sort也可以按指定key排序。

>>> L.sort(key=lambda x:x[1])
>>> L
[('d', 1), ('e', 5), ('b', 9), ('a', 10), ('c', 11)]
>>> l = ['a', 4, 3, 2, 1, [1, 2]]
>>> l.sort(key=str, reverse=True)
>>> l
['a', [1, 2], 4, 3, 2, 1]

参考:https://docs.python.org/3/library/functions.html#sorted

内置函数sorted()的更多相关文章

  1. Python 内置函数sorted()在高级用法

    对于Python内置函数sorted(),先拿来跟list(列表)中的成员函数list.sort()进行下对比.在本质上,list的排序和内建函数sorted的排序是差不多的,连参数都基本上是一样的. ...

  2. 内置函数 sorted

    内置函数 sorted 语法: sorted(iterable,key = None,reverse= false)iterable: 可迭代的对象key:排序规则(排序函数),在sorted内部将& ...

  3. python内置函数sorted()及sort() 函数用法和区别

    python内置函数sorted(),sort()都有排序的意思,但是两者有本质的区别,sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作,list 的 sort ...

  4. python 使用内置函数sorted对各种数据类型进行排序

    python有两个内置的函数用于实现排序,一个是list.sort()函数,一个是sorted()函数. 区别1:list.sort()函数只能处理list类型数据的排序:sorted()则可以处理多 ...

  5. 内置函数——sorted

    对List.Dict进行排序,Python提供了两个方法对给定的List L进行排序,方法1.用List的成员函数sort进行排序,在本地进行排序,不返回副本方法2.用built-in函数sorted ...

  6. 内置函数--sorted,filter,map

    sorted() 排序函数. 语法: sorted(Iterable, key=None, reverse=False) Iterable: 可迭代对象;  key: 排序规则(排序函数); reve ...

  7. 内置函数(sorted、map、enumerate、filter、reduce)

    1.sorted() 语法: sorted(iterable, cmp=None, key=None, reverse=False) 把iterable中的items进行排序之后,返回一个新的列表,原 ...

  8. python 内置函数 sorted()

    sorted() 函数对所有可迭代的对象进行排序操作. sort 与 sorted 区别: sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作. list 的 s ...

  9. python学习笔记011——内置函数sorted()

    1 描述 sorted() 函数对所有可迭代的对象进行排序操作. sorted() 与sort()函数之间的区别 1 排序对象 sorted:所有可迭代对象的排序 sort:list列表的排序 2 返 ...

随机推荐

  1. mfc 线程的优先级

    知识点:  线程优先级  获取当前线程句柄  线程优先级设置  线程优先级变动  线程优先级获取 一.线程优先级(Thread priority ) 简单的说就是(线程)的优先级越高,那么就 ...

  2. 在 JS 对象中使用 . 和 [] 操作属性的区别

    在 JS 对象中,调用属性一般有两种方法--点和中括号的方法. 例如 使用点方法 var obj = { name: "cedric" } console.log(obj.name ...

  3. [SHOI2015]聚变反应炉[树dp、贪心]

    题意 给定一棵 \(n\) 个点的树,每个点有一个启动能量 \(d\) 和传递能量 \(c\) ,如果一个点被启动了,就会向和他直接相连的点发送 \(c\) 的能量,初始所有节点能量为0,问最少多少能 ...

  4. [LOJ#6066]. 「2017 山东一轮集训 Day3」第二题[二分+括号序列+hash]

    题意 题目链接 分析 首先二分,假设二分的答案为 \(mid\),然后考虑利用括号序列来表示树的形态. 点 \(u\) 的 \(k-\) 子树的括号序列表示实际上是刨去了 \(u\) 子树内若干个与 ...

  5. 搭建django虚拟环境完整步骤

    一.建立虚拟环境 pip install virtualenv 要使用Django,首先要建立一个虚拟工作环境.我们先为项目建立一个文件夹learn,在文件夹中打开命令行(shift+右击),来建立另 ...

  6. LeetCode Search for a Range (二分查找)

    题意 Given a sorted array of integers, find the starting and ending position of a given target value. ...

  7. 2014.8.23 Research Meeting Report

    Dear All: It was good talk yesterday. However, I want to emphasize that, finally it is the *work* an ...

  8. VMware在Centos7上配置静态IP的方法

    使用NAT模式 在这里记下192.168.161.2 进入系统,为系统自动分配一个ip 记录下 192.168.161.129 进入网络管理器配置文件目录 cd /etc/sysconfig/netw ...

  9. [咸恩静][Real Love]

    歌词来源:http://music.163.com/#/song?id=484056972 作曲 : Andrew 崔/Brian Cho/220 [作曲 : Andrew 崔/Brian Cho/2 ...

  10. PAT甲题题解-1014. Waiting in Line (30)-模拟,优先级队列

    题意:n个窗口,每个窗口可以排m人.有k为顾客需要办理业务,给出了每个客户的办理业务时间.银行在8点开始服务,如果窗口都排满了,客户就得在黄线外等候.如果有一个窗口用户服务结束,黄线外的客户就进来一个 ...