python升序排序不用sort_Python 列表排序 sort 与 sorted 详解

一、介绍及简单使用

sort 与 sorted 是 Python 内置的列表排序函数。sort

使用 list.sort() 会将 list 进行升序排序,返回 NoneType ,影响 list 本身,如

In [8]: li=[1,5,3,2]

In [9]: li.sort()

In [10]: li

Out[10]: [1, 2, 3, 5]

In [11]: type(li.sort())

Out[11]: NoneTypesorted

使用 sorted(list) 会将 list 进行升序排序,返回 list ,不影响 list 本身,如

In [12]: li=[1,5,3,2]

In [13]: sorted(li)

Out[13]: [1, 2, 3, 5]

In [14]: type(sorted(li))

Out[14]: list

In [15]: li

Out[15]: [1, 5, 3, 2]

二、使用进阶

上面简单介绍了对列表的简单排序,那么,如果列表中嵌套了列表或者是字典呢?

嵌套型列表如何进行排序?

sort 与 sorted 中都含有一个参数 key ,用于自定义参数排序。

key 参数接收的是一个函数,函数的接收参数是列表中的各个值,利用函数的返回值的 ASCII 码进行排序。

若嫌弃定义函数麻烦可以使用 lambda 匿名函数,复杂函数推荐

例子如下:列表嵌套列表

In [30]: l1=[1,3]

In [31]: l2=[2,5]

In [32]: l3=[3,4]

In [33]: ll=[l1,l2,l3]

In [34]: ll

Out[34]: [[1, 3], [2, 5], [3, 4]]

# 定义一个返回列表最后一个元素的函数

In [35]: def a(l):

...: return l[-1]

...:

# 根据嵌套列表的最后一个元素进行升序排序

In [36]: sorted(ll,key=a)

Out[36]: [[1, 3], [3, 4], [2, 5]]

In [37]: ll.sort(key=a)

In [38]: ll

Out[38]: [[1, 3], [3, 4], [2, 5]]

# 使用 lambda 根据嵌套列表的首个元素进行升序排序

In [39]: sorted(ll,key=lambda s: s[0])

Out[39]: [[1, 3], [2, 5], [3, 4]]

# 直接使用 Python 内建函数 len ,根据列表字符串长度进行升序排序

In [40]: sorted(['aaa','b','cc'],key=len)

Out[40]: ['b', 'cc', 'aaa']嵌套字典

In [46]: d1={'a':1,'b':2}

In [47]: d2={'a':11,'b':1}

In [48]: d3={'a':10,'b':3}

In [49]: ld=[d1,d2,d3]

In [50]: ld

Out[50]: [{'a': 1, 'b': 2}, {'a': 11, 'b': 1}, {'a': 10, 'b': 3}]

In [51]: def get_b(d):

...: return d.get('b')

...:

In [52]: sorted(ld,key=get_b)

Out[52]: [{'a': 11, 'b': 1}, {'a': 1, 'b': 2}, {'a': 10, 'b': 3}]

...更多使用

其余更复杂的使用不外乎 key 接收的函数更多的定义,此处不再列举

原创文章,转载请保留或注明出处!

首发于我的博客 :Python 列表排序 sort 与 sorted 详解​maida6244.xyz

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值