zoukankan      html  css  js  c++  java
  • python 排序函数L.sort()和sorted()

    python提供了两种排序方法:

      1、列表的成员函数:L.sort(),在原位重新排列列表,未创建新的列表;

      2、内建函数:sorted(L),产生一个新的列表,不改变原列表;

    --------------------------------sorted---------------------------------------
    >>> help(sorted)
    Help on built-in function sorted in module __builtin__:

    sorted(...)
        sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list

    cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;
    key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;
    reverse:排序规则. reverse = True 或者 reverse = False,有默认值。
    返回值:是一个经过排序的可迭代类型,与iterable一样。
    注;一般来说,cmp和key可以使用lambda表达式。
    ---------------------------------sort----------------------------------------
    >>> help(list.sort)
    Help on method_descriptor:

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

    Sorting basic:

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

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

    Sorting  cmp:

    >>>L = [('b',2),('a',1),('c',3),('d',4)]
    >>>print sorted(L, cmp=lambda x,y:cmp(x[1],y[1]))
    [('a', 1), ('b', 2), ('c', 3), ('d', 4)]

    Sorting  keys:

    >>>L = [('b',2),('a',1),('c',3),('d',4)]
    >>>print sorted(L, key=lambda x:x[1]))
    [('a', 1), ('b', 2), ('c', 3), ('d', 4)]

    Sorting  reverse:

    >>> print sorted([5, 2, 3, 1, 4], reverse=True)
    [5, 4, 3, 2, 1]

    >>> print sorted([5, 2, 3, 1, 4], reverse=False)
    [1, 2, 3, 4, 5]

    注:效率key>cmp(key比cmp快)

    高级特性
    在Sorting Keys中:我们看到,此时排序过的L是仅仅按照第二个关键字来排的,如果我们想用第二个关键字
    排过序后再用第一个关键字进行排序呢?
    >>> L = [('d',2),('a',4),('b',3),('c',2)]
    >>> print sorted(L, key=lambda x:(x[1],x[0]))
    >>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]

  • 相关阅读:
    港股通不得不了解的汇率问题
    Red and Black(红与黑)BFS
    什么时候用DFS,什么时候用BFS?(DFS和BFS的特点和异同)
    (最详细解答) 问题 B: DFS or BFS?
    HDU 2181 哈密顿绕行世界问题 (dfs)
    codeup 算法笔记【递归入门】组合+判断素数
    DFS--基本入门模板 和 例题 (绝对入门) (最全)
    福州大学在线测评系统 FZU 1013 RP Game
    2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 C Thinking Bear magic
    ACM 数论-博弈 (比赛用)
  • 原文地址:https://www.cnblogs.com/xiaofeiIDO/p/7373760.html
Copyright © 2011-2022 走看看