• python几个排序函数 sort sorted argsort


    Python中排序常用到的sort 、sorted和argsort函数

    [摘要:Python中sort 战 sorted函数 一 、先容 sort函数是list列表中的函数,而 sorted能够对list或iterator举行排序 2、sort战sorted的比拟 1、用sort函数对列表排序时会影响列表自身,而sorted没有会 举例]

     

    Python中sort 和 sorted函数    一、介绍

    sort函数是list列表中的函数,而sorted可以对list或者iterator进行排序
    二、sort和sorted的比较
    1、用sort函数对列表排序时会影响列表本身,而sorted不会
    举例:

    >>> a = [1,2,1,4,3,5] >>> a.sort() >>> a [1, 1, 2, 3, 4, 5]

    >>> a = [1,2,1,4,3,5] >>> sorted(a) [1, 1, 2, 3, 4, 5] >>> a [1, 2, 1, 4, 3, 5]


    2、sorted(iterable,cmp,key,reverse)
    参数:iterable可以是list或者iterator
    cmp是带两个参数的比较函数;
    key 是带一个参数的函数;
    reverse为False或者True;
    举例说明
    (1)用cmp函数排序

    >>> list1 = [('david', 90), ('mary',90), ('sara',80),('lily',95)] >>> sorted(list1,cmp = lambda x,y: cmp(x[0],y[0])) [('david', 90), ('lily', 95), ('mary', 90), ('sara', 80)] >>> sorted(list1,cmp = lambda x,y: cmp(x[1],y[1])) [('sara', 80), ('david', 90), ('mary', 90), ('lily', 95)]

    (2)用key函数排序

    >>> list1 = [('david', 90), ('mary',90), ('sara',80),('lily',95)] >>> sorted(list1,key = lambda list1: list1[0]) [('david', 90), ('lily', 95), ('mary', 90), ('sara', 80)] >>> sorted(list1,key = lambda list1: list1[1]) [('sara', 80), ('david', 90), ('mary', 90), ('lily', 95)]

    (3)用reverse排序

    >>> sorted(list1,reverse = True) [('sara', 80), ('mary', 90), ('lily', 95), ('david', 90)]

    (4)用operator.itemgetter函数排序

    >>> from operator import itemgetter >>> sorted(list1, key=itemgetter(1)) [('sara', 80), ('david', 90), ('mary', 90), ('lily', 95)] >>> sorted(list1, key=itemgetter(0)) [('david', 90), ('lily', 95), ('mary', 90), ('sara', 80)]

    介绍operator.itemgetter函数

    >>> import operator >>> a = [1,2,3] >>> b = operator.itemgetter(0) >>> b(a) 1

    operator.itemgetter函数获取的不是值,而是定义了一个函数。
    (5)多级排序
    >>>(,=(0,1))
    [('david',90),('lily',95),('mary',90),('sara',80)]
    3.argsort函数

    argsort函数返回的是数组值从小到大的索引值

    Examples
    --------
    One dimensional array:一维数组

    >>> x = np.array([3, 1, 2])
    >>> np.argsort(x)
    array([1, 2, 0])#1,2,0 分别表示x中的index,即x[1],x[2],x[0]的顺序排序
    从此返回值,可以将np.array按照此索引重新排序,例如:

    sorting =np.argsort(t1)

    sort_t2=t2[sorting]
    Two-dimensional array:二维数组

    >>> x = np.array([[0, 3], [2, 2]])
    >>> x
    array([[0, 3],
    [2, 2]])

    >>> np.argsort(x, axis=0) #按列排序
    array([[0, 1],
    [1, 0]])

    >>> np.argsort(x, axis=1) #按行排序
    array([[0, 1],
    [0, 1]])

    #######################################

    例1:

    >>> x = np.array([3, 1, 2])
    >>> np.argsort(x) #按升序排列
    array([1, 2, 0])
    >>> np.argsort(-x) #按降序排列
    array([0, 2, 1])

    >>> x[np.argsort(x)] #通过索引值排序后的数组
    array([1, 2, 3])
    >>> x[np.argsort(-x)]
    array([3, 2, 1])

    另一种方式实现按降序排序:

    >>> a = x[np.argsort(x)]
    >>> a
    array([1, 2, 3])
    >>> a[::-1]
    array([3, 2, 1])

  • 相关阅读:
    [微信篇]ESP8266-NonOS学习笔记(十一)之微信小程序控制LED灯 Part 1
    [外设篇]ESP8266-SDK教程(十)之DHT11、OLED1306
    [基础篇]ESP32-RTOS-SDK教程(一)之Windows环境搭建
    [网络篇]ESP8266-SDK教程(九)之物联网标配MQTT实际测试
    [网络篇]ESP8266-SDK教程(八)之物联网标配MQTT服务端软件
    [网络篇]ESP8266-SDK教程(七)之物联网标配MQTT初相识
    [网络篇]ESP8266-SDK教程(六)之网页配置Wi-Fi名称和密码
    [网络篇]ESP8266-SDK教程(五)之SmartConfig、Airkiss等多种配网方式
    [基础篇]ESP8266-SDK教程(四)之GPIO操作(按键、LED、中断、定时器)
    [网络篇]ESP8266-SDK教程(三)之TCP通信Server<->Client
  • 原文地址:https://www.cnblogs.com/heshangaichirou/p/5398701.html
Copyright © 2020-2023  润新知