它们的大小关系

来源:2-7 python中自定义排序函数

weibo_墨鸦墨鸦1_mrAN04

2018-11-15 06:41

about 不是应该比 bob 大吗,怎么排序的啊?

写回答 关注

2回答

  • KingToAce
    2018-11-15 10:29:10
    已采纳

    sorted()是高阶函数,可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。'a'的ASCII码是97,'b'的ASCII码是98,由首字母的ASCII码进行比较,根据自定义的比较函数进行排序。

    weibo_...

    是呢,它们不是按照ascll码加起来吗?那bob不是要小于about吗

    2018-11-16 06:02:07

    共 1 条回复 >

  • KingToAce
    2018-11-19 11:28:55

    高阶函数sorted()不是按照ASCII码加起来进行排序的,而是从首字母开始进行ASCII码排序,就像手机电话通讯录里面的联系人,按照联系人的姓名首字母进行归类排序,而不是按照联系人姓名的ASCII码加起来进行排序,这样的排序算法和数学里面的数字大小比较不一样的(数学中1<12<123...,而排序中先从首字母进行比较:拿'a'、'ab'、'b'进行比较,首字母ASCII码:a(97)<b(98),如果按照从小到大排序,'a'和'ab'就排在'b'前面了,而'a'与'ab'首字母一样,接着比较第二个,由于'a'没有第二个字母了而'ab'含有第二个字母,因此'a'就排在'ab'前面了,最终所得的从小到大的顺序应该是:'a'、'ab'、'b')

python进阶

学习函数式、模块和面向对象编程,掌握Python高级程序设计

255588 学习 · 2979 问题

查看课程