关于python中sort排序的一个简单问题:

最近有小伙伴私聊问了一些类似的问题,就是关于python的sort排序的问题:

a = [1, 0, 4, 0, 2, 3]
a.sort(key=bool)
print(a)

输出结果:
[0, 0, 1, 4, 2, 3]

就是对这个排序的有点不太理解,为什么是[0, 0, 1, 4, 2, 3],不应该按升序来的吗?
之所以产生这个误区,是因为对这个sort理解还不够,我之前也写过一篇关于sort排序的实现,里面简单的阐述原理,并且也实现了demo。
我们再来回到这个问题上:
a.sort(key=bool) 这步可以这样理解:

a = [1, 0, 4, 0, 2, 3]
b = list(map(lambda x: (bool(x), x), a))
b.sort(key=lambda x: x[0])
print(list(map(lambda x: x[1], b)))

这里运用了元组排序对这个进行了隐式转化。
也就是说转成了元组,指定了排序的索引位置,然后再转回来。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,894评论 2 9
  • 基本排序 Sorting Basicskey函数Key Functionsoperator库函数自定义排序( Op...
    六尺帐篷阅读 2,480评论 0 4
  • 1.简介插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列...
    AngerCow阅读 409评论 0 1
  • 你好哇,我是春华。 一名大二英语专业在读生。 钟爱玫瑰与风,认为这便是宇宙浩瀚的温柔。 2020我为自己立下了很多...
    诸葛春华阅读 118评论 0 0
  • 今天用在课程上学到的方法,让先生和孩子撕纸,撕完后儿子一个洞洞,先生两个洞洞。同样的纸,同样的指令,同样的做法,得...
    陈QX阅读 112评论 0 2