python中sorted方法和列表的sort方法


sort 與 sorted 區別:

  1. sort 是應用在 list 上的方法,屬於列表的成員方法,sorted 可以對所有可迭代的對象進行排序操作。
  2. list 的 sort 方法返回的是對已經存在的列表進行操作,而內建函數 sorted 方法返回的是一個新的 list,而不是在原來的基礎上進行的操作。
  3. sort使用方法為ls.sort(),而sorted使用方法為sorted(ls)

一、基本形式

列表有自己的sort方法,其對列表進行原址排序,既然是原址排序,那顯然元組不可能擁有這種方法,因為元組是不可修改的。

排序,數字、字符串按照ASCII,中文按照unicode從小到大排序。

>>>List1 = [3, 2, 4, 5, 1, 9]
>>>List1.sort()
>>>List1
[1, 2, 3, 4, 5, 9]

如果需要一個排序好的副本,代碼如下: 

>>>List1 = [3, 2, 4, 5, 1, 9]
>>>List2 = List1[:]
>>>List2.sort()
>>>List2
[1, 2, 3, 4, 5, 9]
>>>List1
[3, 2, 4, 5, 1, 9]

另一種獲取已排序的列表副本的方法是使用sorted函數:

>>>List1 = [3, 2, 4, 5, 1, 9]
>>>List2 = sorted(List1)   #sorted返回一個有序的副本,並且類型總是列表
>>>List2
[1, 2, 3, 4, 5, 9]
>>>List1
[3, 2, 4, 5, 1, 9]

二、可選參數

sort方法還有兩個可選參數:key和reverse

1、key在使用時必須提供一個排序過程中調用的函數:

>>>List1 = ['1', '333', '22', '55555', '4444']
>>>List1.sort(key=len)
>>>List1
['1', '22', '333', '4444', '55555']

2、reverse實現逆序排序,需要提供一個布爾值:

>>>List1 = [3, 23, 1, 0, 8]
>>>List1.sort(reverse=True)
>>>List1
[23, 8, 3, 1, 0]

True為倒序排列,False為正序排列

 三、例子

例:

列表按照其中每一個值的絕對值排序。
>>>List1 = [123, 89, -32, 0, 321, -36, 33]
>>>List2 = sorted(List1, key=abs)
>>>List2
[0, -32, 33, -36, 89, 123, 321]
>>>List1
[123, 89, -32, 0, 321, -36, 33]

對復雜的元組排序

>>>student_tuples = [
    ('john', 'A', 15), 
    ('jane', 'B', 12), 
    ('tom', 'A', 11),
    ('Jack', 'B', 13)
]
>>>result = sorted(student_tuples, key=lambda student: student[2])
>>>result
[('tom', 'A', 11), ('jane', 'B', 12), ('Jack', 'B', 13), ('john', 'A', 15)]

根據字典的value排序

默認sorted是對dict的key排序的,如果要根據dict的value排序就需要指定key參數了。

>>>dict_my = {'a': 2, 'c': 5, 'b': 1, 'ab': 6, 'e': 2}
>>>dict_my
{'a': 2, 'ab': 6, 'b': 1, 'c': 5, 'e': 2}
>>>result = sorted(dict_my)
>>>result
['a', 'ab', 'b', 'c', 'e']
>>>dict_my['c']
5
>>>result2 = sorted(dict_my, key=lambda x : dict_my[x], reverse=True)
>>>result2
['ab', 'c', 'a', 'e', 'b']

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM