zoukankan      html  css  js  c++  java
  • 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])

  • 相关阅读:
    使用poi读写excel文件
    视频云全球创新挑战赛 — 视频目标分割经典算法解析
    阿里云 RTC QoS 弱网对抗之变分辨率编码
    用 WebRTC 打造一个音乐教育 App,要解决哪些音质难题?
    “蚂蚁呀嘿” 刷屏的背后:算法工程师带你理性解构神曲
    白话解读 WebRTC 音频 NetEQ 及优化实践
    未来直播 “神器”,像素级视频分割是如何实现的 | CVPR 冠军技术解读
    「 视频云大赛 — 大咖驾到 」驱动下一代技术浪潮,我们更专注价值落地
    「 视频云大赛 — 大咖驾到 」下一代技术新浪潮,正由视频云驱动
    视频云大赛|视频目标分割,下一个视频算法技术爆发点?
  • 原文地址:https://www.cnblogs.com/heshangaichirou/p/5398701.html
Copyright © 2011-2022 走看看