【Python】python中你所忽视的一个列表sort排序功能

1.前言

在说这个之前呢,也分享一个小小的喜悦。严格意义上来说我在CSDN上写博客差不多一年了,也是自己导师让我们在那个平台来书写自己的学习过程,如今也写了120来篇了,也有人在博文下评论咨询,自己每每看到csdn给我发邮件,我就猜到了,我就尽快回复,如今现在也算小成,有了“博客专家”的称号了,但这个始终不是终点,只是一步一步记录过程中的一个附带产物。就算是给自己的一个鼓励,再接再厉,毕竟自己能力在什么水平,自己最清楚。

到正文了,昨天一学妹问我一个关于python的问题,当时在外忙碌,没时间细看。今天看一下,咋一看我还真的不知道这个问题,bookinfo.sort(reverse=True ,key=lambda x:(x[1],x[1]/x[2]))是如何排序的。但是我猜测应该是按照第二个元素排序,如果第二个元素相同,就按照第二个元素和第三个元素的比值排序。猜测归猜测,自己就去测试了一下。过程如下。

2.环境准备

系统:win10

python版本:3.6

3.程序实现

为了满足实验要求,就设置几个第二个元素相同的数据如:摆渡人

bookinfo=[('不一样的卡梅拉(全套)',22.50,120),('零基础学Android',65.10,89.80),
          ('摆渡人',23.40,36.00),('福尔摩斯探案全集8册',22.50,128),('不一样的卡梅拉(全套)',22.50,100),('摆渡人',23.40,40.00)]
bookinfo.sort(key=lambda x:(x[1],x[1]/x[2]))   
for temp in bookinfo:
    print(temp,"x[1]/x[2]:",temp[1]/temp[2])

程序运行后的结果是:

('福尔摩斯探案全集8册', 22.5, 128) x[1]/x[2]: 0.17578125
('不一样的卡梅拉(全套)', 22.5, 120) x[1]/x[2]: 0.1875
('不一样的卡梅拉(全套)', 22.5, 100) x[1]/x[2]: 0.225
('摆渡人', 23.4, 40.0) x[1]/x[2]: 0.585
('摆渡人', 23.4, 36.0) x[1]/x[2]: 0.6499999999999999
('零基础学Android', 65.1, 89.8) x[1]/x[2]: 0.7249443207126949
[Finished in 0.2s]

根据结果可看出确实是这样的。

4.sort拓展

在使用sort函数的时候需要注意的是:该函数会修改原来的数组,不会返回新的数组。

如果想使用逆序则可以:bookinfo.sort(reverse=True,key=lambda x:(x[1],x[1]/x[2]))

key这个属性后的x是任意的,自定义的,代表当前的元素的内容。


 上一篇
资源收集分享-视频 资源收集分享-视频
1. 前言避免分享的资源被和谐,读者可以关注“皮皮总”订阅号,根据相应的关键字回复获取。视频分享主要是通过百度云盘分享,B站视频资源分享,如果资源列表中没有您需要的内容,您可以留言,看博主能不能找到,如果你也有很好的资源,可以在我的订阅号中
2019-03-24
下一篇 
在虚拟机Vmware上安装Linux(Ubuntu) 在虚拟机Vmware上安装Linux(Ubuntu)
1.前言为什么谈到要在虚拟机中安装Ubuntu系统,或者说,为什么我们需要使用虚拟机?首先要知道虚拟机就是一个将主系统(当前系统)划分一块独立区域,然后在这块区域中安装很多系统,并且不会影响主系统的一个软件,当前使用比较多的是Vmware(
2019-03-11
  目录