sort与sorted的区别

描述

        咱们须要对List进行排序,Python提供了两个方法对给定的List L进行排序 :
        方法1.用对List的成员函数sort进行排序
        方法2.用内置函数sorted进行排序(从2.4开始)html

-------------------------------------------------sorted--------------------------------------------------------python

        sorted() 函数对全部可迭代的对象进行排序操做
>>> help(sorted)函数

Help on built-in function sorted in module builtins:
sorted(iterable, /, *, key=None, reverse=False)post

    Return a new list containing all items from the iterable in ascending order.ui

    A custom key function can be supplied to customize the sort order, and the
    reverse flag can be set to request the result in descending order.url

--------------------------------------------------sort---------------------------------------------------------spa

        sort() 函数用于对原列表进行排序,若是指定参数,则使用比较函数指定的比较函数
>>> help(list.sort)
Help on method_descriptor:.net

sort(...)
L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*code

----------------------------------------------参数说明-----------------------------------------------------htm

原型:sort(key,reverse=False)

key:用来指定一个函数,此函数在每次元素比较时被调用,此函数表明排序的规则,也就是你按照什么规则对你的序列进行排序;

reverse:是用来代表是否逆序,默认的False状况下是按照升序的规则进行排序的,当reverse=True时,便会按照降序进行排序。

注;通常来讲,cmp和key能够使用lambda表达式

sort 与sorted的区别

sort()与sorted()的不一样在于,sort是在原位从新排列列表,而sorted()是产生一个新的列表。

sort 是应用在 list 上的方法,sorted 能够对全部可迭代的对象进行排序操做。

list 的 sort 方法返回的是对已经存在的列表进行操做,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操做

示例:

示例一


>>> a=[1,2,5,3,9,4,6,8,7,0,12]
>>> a.sort()
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12]

>>> a=[1,2,5,3,9,4,6,8,7,0,12]
>>> sorted(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12]
>>> a
[1, 2, 5, 3, 9, 4, 6, 8, 7, 0, 12]

区别:
对于一个无序的列表a,调用a.sort(),对a进行排序后返回a,sort()函数修改待排序的列表内容。
而对于一样一个无序的列表a,调用sorted(a),对a进行排序后返回一个新的列表,而对a不产生影响。

 示例二


假设用元组保存每个学生的信息,包括学号,姓名,年龄。用列表保存全部学生的信息。

>>> list1=[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]
>>> list1.sort()
>>> list1
[(2, 'Mike', 22), (5, 'Lucy', 19), (8, 'Logan', 20)]

>>> list1=[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]
>>> sorted(list1)
[(2, 'Mike', 22), (5, 'Lucy', 19), (8, 'Logan', 20)]
>>> list1
[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]

小结:
由示例能够看出,当列表由list(或者tuple)组成时,默认状况下,sort和sorted都会根据list[0](或者tuple[0])做为排序的key,进行排序。
以上都是默认的排序方式,咱们能够编写代码控制两个函数的排序行为。主要有三种方式:基于key函数;基于cmp函数和基于reverse函数

 基于key函数排序


>>> list1=[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]
>>> list1.sort(key=lambda x:x[2])
>>> list1
[(5, 'Lucy', 19), (8, 'Logan', 20), (2, 'Mike', 22)]

>>> list1=[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]
>>> sorted(list1, key=lambda x:x[2])
[(5, 'Lucy', 19), (8, 'Logan', 20), (2, 'Mike', 22)]
>>> list1
[(8, 'Logan', 20), (2, 'Mike', 22), (5, 'Lucy', 19)]

 基于reverse函数


>>> a=[1,2,5,3,9,4,6,8,7,0,12]
>>> a.sort(reverse=False)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12]

>>> a=[1,2,5,3,9,4,6,8,7,0,12]
>>> a.sort(reverse=True)
>>> a
[12, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> a.sort(reverse=True)

小结:reverse=False为升序排序(默认);reverse=True为降序排序

 博客搬运地址

相关文章
相关标签/搜索