sort与sorted的区别

描述

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

-------------------------------------------------sorted--------------------------------------------------------

sorted() 函数对所有可迭代的对象进行排序操作
>>> help(sorted)

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

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

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.

--------------------------------------------------sort---------------------------------------------------------

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

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

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

原型: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为降序排序

博客搬运地址

原文地址:https://www.cnblogs.com/clement-jiao/p/9095699.html

时间: 2024-10-29 14:04:34

sort与sorted的区别的相关文章

sort与sorted的区别及实例

描述 我们需要对List进行排序,Python提供了两个方法对给定的List L进行排序 : 方法1.用对List的成员函数sort进行排序方法2.用内置函数sorted进行排序(从2.4开始) sorted sorted() 函数对所有可迭代的对象进行排序操作 >>> help(sorted) Help on built-in function sorted in module builtins: sorted(iterable, /, *, key=None, reverse=Fal

python中list.sort()与sorted()的区别

list.sort()和sorted()都是python的内置函数,他们都用来对序列进行排序,区别在于 list.sort()是对列表就地(in-place)排序,返回None:sorted()返回排好序的新列表,原列表不变 list.sort()只适用于列表,sorted()适用于任意可迭代对象 参考链接:Sorting HOW TO 原文地址:https://www.cnblogs.com/zzliu/p/10803320.html

python中sort()与sorted()的区别

Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列 一,最简单的排序 1.使用sort排序 my_list = [3, 5, 1, 4, 2] my_list.sort() print (my_list) #输出: [1, 2, 3, 4, 5] 使用sort()方法对list排序会修改list本身,不会返回新list. sort()不能对dict字典进行排序 2.使用sorted()排序 my_list = [

sort 和sorted的 区别

sort(cmp=None, key=None, reverse=False) sorted(iterable, cmp=None, key=None, reverse=False) sort是容器的函数,用List的成员函数sort进行排序 sorted是Python的内建函数相同的参数,用built-in函数sorted进行排序 sorted(iterable,key=None,reverse=False),返回新的列表,对所有可迭代的对象均有效 sort(key=None,reverse=

python sort和sorted

转自 https://www.jianshu.com/p/419a8732ac62 一.函数sort() sort() :仅对list对象进行排序,会改变list自身的顺序,没有返回值,即原地排序: list.sort(key=None, reverse=False) key :设置排序方法,或指定list中用于排序的元素: reverse :升降序排列,默认为升序排列: 一维元素组成的list排序:忽略参数key >>> a = ['TaoBao', 'Google', 'BaiDu'

python排序函数sort()与sorted()区别

sort是容器的函数:sort(cmp=None, key=None, reverse=False) sorted是python的内建函数:sorted(iterable, cmp=None, key=None, reverse=False) 参数解析: cmp:比较函数,比较什么参数由key决定.例如:cmp(e1, e2) 是具有两个参数的比较函数,返回值:负数(e1 < e2):0(e1 == e2):正数( e1 > e2).key:用列表元素的某个属性或函数作为关键字.reverse

python sort、sorted、reverse、reverd的区别

sort.sorted.reverse.reversed的区别 !!! error 首先应该区分的是,sort和reverse是列表的一个方法.字符串.元组.字典.集合是没有这两个方法的.而sorted和reversed是python的两个内置函数,并且只有字符串.列表.元组,可以当做参数传入,字典和集合不支持,得到的是一个生成器对象 !!! sort与sorted() sort 只有列表有该方法,直接对原来的列表进行排序,不会产生新列表 l1 = [12,2,34,54,5,17] l1.so

面试题编程题02-python sort和sorted用法与区别

list=[3,4,2,1] #list.sort() print(sorted(list)) print(list) 如代码所示用法 list.sort()和sorted(list) sorted不会修改列表 sort直接修改原列表为有序列表 原文地址:https://www.cnblogs.com/feihujiushiwo/p/10888602.html

python中的sort、sorted、reverse、reversed详解

python语言中的列表排序方法有三个:reverse反转/倒序排序.sort正序排序.sorted可以获取排序后的列表.在更高级列表排序中,后两中方法还可以加入条件参数进行排序. reverse()方法 将列表中元素反转排序,比如下面这样 1 2 3 4 >>> x = [1,5,2,3,4] >>> x.reverse() >>> x [4, 3, 2, 5, 1] reverse列表反转排序:是把原列表中的元素顺序从左至右的重新存放,而不会对列表