美文网首页程序员
python3 排序sorted的用法

python3 排序sorted的用法

作者: _AlphaBaby_ | 来源:发表于2018-09-28 20:16 被阅读3次

    在以前学c/c++的时候更多的是给数组用快速排序,堆排序的,但是数组是一个结构很简单的序列,这种简单的序列用python怎么排序呢

    example_list = [5, 0, 6, 1, 2, 7, 3, 4]
    example_list.sort()
    print(example_list)
    
    图一
    但是sort() 函数只是对间的系列进行排序

    在很多时候我们都像给一些非list的可迭代对象进行排序,这里我们就要用到sorted()函数了

    sort 与 sorted 区别:

    sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
    list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
    函数原型
    `sorted(iterable, key=None, reverse=False)
    参数解读

    • iterable 是值的你要排序的可迭代对象
    • key是值的你要对可爹地啊对象里面那个关键字进行排序
    • reverse 指是否降序排序,默认的是False

    使用sorted排序的时候常常会使用到lambda,所以我们先认识学习下lambda

    def func1(x):
        return x+2
    
    
    f = lambda x: x+2
    
    print(func1(2))
    print(f(2))
    

    以上带大运行的结果都是4, 重一个函数的角度来看lambda x: x+2和函数func1的功能是一样的,所以lambda表达式是可以看成一个不能实现复杂逻辑功能的函数

    def action(x):
        return lambda y:x+y
    
    
    print(action(1)(2))
    
    ret = action(1)
    print(ret(2))
    

    以上代码的运行结果都是3,我们分析一下action函数:

    1. 首先action函数有个参数是x
    2. 返回值是一个lambda表达式
    3. 结合上一个代码分析,返回的是个函数
      结合以上分析,可知道执行action(1) 得到的是一个函数ret, 然后我们可以继续执行ret(2),执行ret(2)就想到于执行了lambda表达式

    同理我们可以写出这样的表达式

    f = lambda x: lambda y: x+y
    
    print(f(1)(2))
    

    sorted用法

    先看代码

    array = [{"age":20,"name":"a"},{"age":25,"name":"b"},{"age":10,"name":"c"}]
    array = sorted(array,key=lambda x:x["age"], reverse=False)
    print(array)
    

    运行结果是:
    [{'age': 10, 'name': 'c'}, {'age': 20, 'name': 'a'}, {'age': 25, 'name': 'b'}]
    我使用的例子是一个典型的json数据,同时我们常常对json的数据格式进行排序
    其中lambda x:x["age"]表达式的作用的把每个list中的每个字典取出来然后在用dist中的age字段进行排序

    相关文章

      网友评论

        本文标题:python3 排序sorted的用法

        本文链接:https://www.haomeiwen.com/subject/jjjgnftx.html