zoukankan      html  css  js  c++  java
  • Python排序之多属性排序

    1.sort函数说明:

    sort函数是list类的一个方法,说明如下:

    sort(...)
    L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
    cmp(x, y) -> -1, 0, 1

    其中,包含三个参数cmp,key,reverse:cmp用于指定排序的大小比较算法;key用于制定排序的维度和优先级别;reverse说明是否是逆序排列(True表示从大到小)

    2.实例

    2.1让元组按照第一维度升序,第二维度也是升来排序。(或者都是逆序)



    students.sort(key=lambda l:(l[0],l[1]),reverse=True)
    students.sort(key=lambda l:(l[0],l[1]))

    2.2让一组升序,一组数据降序排列:

    def mycmp(a,b):
    if a[0]>b[0]:
    return 1
    if a[0]<b[0]:
     return -1
    if a[1]<b[1]:
     return 1
    if a[1]>b[1]:
    return -1
    return 0
    if __name__=="__main__":
    #students.sort(key=lambda l:(l[0],l[1]),reverse=True)
    students.sort(cmp=mycmp)


    3.python的内置函数sort



    a = [5,2,1,9,6] 
    >>> sorted(a) #将a从小到大排序,不影响a本身结构 
    [1, 2, 5, 6, 9] 
    >>> sorted(a,reverse = True) #将a从大到小排序,不影响a本身结构 
    [9, 6, 5, 2, 1] 
    >>> a.sort() #将a从小到大排序,影响a本身结构 
    >>> a 
    [1, 2, 5, 6, 9] 
    >>> a.sort(reverse = True) #将a从大到小排序,影响a本身结构 
    >>> a 
    [9, 6, 5, 2, 1] 
    注意,a.sort() 已改变其结构,b = a.sort() 是错误的写法! 
    >>> b = ['aa','BB','bb','zz','CC'] 
    >>> sorted(b) 
    ['BB', 'CC', 'aa', 'bb', 'zz'] #按列表中元素每个字母的ascii码从小到大排序,如果要从大到小,请用sorted(b,reverse=True)下同 
    >>> c =['CCC', 'bb', 'ffff', 'z'] 
    >>> sorted(c,key=len) #按列表的元素的长度排序 
    ['z', 'bb', 'CCC', 'ffff'] 
    >>> d =['CCC', 'bb', 'ffff', 'z'] 
    >>> sorted(d,key = str.lower ) #将列表中的每个元素变为小写,再按每个元素中的每个字母的ascii码从小到大排序 
    ['bb', 'CCC', 'ffff', 'z'] 
    >>> def lastchar(s): 
    return s[-1] 
    >>> e = ['abc','b','AAz','ef'] 
    >>> sorted(e,key = lastchar) #自定义函数排序,lastchar为函数名,这个函数返回列表e中每个元素的最后一个字母 
    ['b', 'abc', 'ef', 'AAz'] #sorted(e,key=lastchar)作用就是 按列表e中每个元素的最后一个字母的ascii码从小到大排序 
    >>> f = [{'name':'abc','age':20},{'name':'def','age':30},{'name':'ghi','age':25}] #列表中的元素为字典 
    >>> def age(s): 
    return s['age'] 
    >>> ff = sorted(f,key = age) #自定义函数按列表f中字典的age从小到大排序 
    [{'age': 20, 'name': 'abc'}, {'age': 25, 'name': 'ghi'}, {'age': 30, 'name': 'def'}] 
    >>> f2 = sorted(f,key = lambda x:x['age']) #如果觉得上面定义一个函数代码不美观,可以用lambda的形式来定义函数,效果同上 

  • 相关阅读:
    PHP基础学习笔记(一)
    安装wampserver之后,浏览器中输入localhost页面显示IIS7解决办法
    HTML5常识总结(一)
    AngularJs中的服务
    AngularJs中的directives(指令part1)
    Happy Number——LeetCode
    Binary Tree Zigzag Level Order Traversal——LeetCode
    Construct Binary Tree from Preorder and Inorder Traversal——LeetCode
    Construct Binary Tree from Inorder and Postorder Traversal——LeetCode
    Convert Sorted Array to Binary Search Tree——LeetCode
  • 原文地址:https://www.cnblogs.com/hellohorld/p/10809741.html
Copyright © 2011-2022 走看看