Python sort()和sorted()函数区别及用法详解
生活随笔
收集整理的這篇文章主要介紹了
Python sort()和sorted()函数区别及用法详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
sorted()屬于內置函數,作用于任意可迭代的對象,sorted() 函數總是會返回一個排序后的列表,原有列表保持不變
sort()一般作用于列表,屬于列表的成員函數,它會直接修改原有列表,函數返回為 None。sort()函數總體來說不需要復制原有列表,所以消耗內存比較小,效率也比較高
a=['1',1,'a',3,7,'n'] sorted(a) >>>[1, 3, 7, '1', 'a', 'n'] a >>>['1', 1, 'a', 3, 7, 'n'] print a.sort() >>>None a >>>[1, 3, 7, '1', 'a', 'n']a = ['fsf','dadef','f''gt','frggr'] a.sort(key=len) print(a) >>>['fsf', 'fgt', 'dadef', 'frggr']注:
如果實際應用中需要保存原列表,使用 sorted() 函數較為適合,否則可以選擇 sort() 函數,因為 sort() 函數不需要復制原有列表,消耗的內存較少,效率也較高。
key 指定的函數將作用于 list 的每一個元素上,并根據 key 函數返回的結果進行排序 sorted([36, 5, -12, 9, -21], key=abs) ---[5, 9, -12, -21, 36]sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower) ---['about', 'bob', 'Credit', 'Zoo']要進行反向排序,不必改動key函數,可以傳入第三個參數 reverse=True : sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower,reverse=True) ---['Zoo', 'Credit', 'bob', 'about']對于sorted()函數,他可以對不同的數據結構進行排序:
operator.itemgetter函數
operator模塊提供的itemgetter函數用于獲取對象的哪些維的數據,參數為一些序號(即需要獲取的數據在對象中的序號)
from operator import itemgetter a = [1,2,3,4] b=itemgetter(3,0) //定義函數b,獲取對象的第3個域和第0個的值 print(b(a)) ---(4, 1) # 注意operator.itemgetter函數獲取的不是值,而是定義了一個函數,通過該函數作用到對象上才能獲取值。基礎版
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)] from operator import itemgetter L2 = sorted(L, key= itemgetter(0)) print(L2) 或者: L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)] a = sorted(L, key=lambda x: x[0]) print(a)---[('Adam', 92), ('Bart', 66), ('Bob', 75), ('Lisa', 88)]對字典進行排序
phonebook = {'Linda': '7750', 'Bob': '9345', 'Carol': '5834'} from operator import itemgetter sorted_ed = sorted(phonebook.items(), key=itemgetter(0)) print(sorted_ed)---[('Bob', '9345'), ('Carol', '5834'), ('Linda', '7750')]對多維list進行排序
from operator import itemgetter gameresult = [['Bob', 95.00, 'A'], ['Alan', 86.0, 'C'],['Mandy', 82.5, 'A'], ['Rob', 86, 'E']] sorted_ed = sorted(gameresult , key=itemgetter(2, 1)) print(sorted_ed)---[['Mandy', 82.5, 'A'], ['Bob', 95.0, 'A'], ['Alan', 86.0, 'C'], ['Rob', 86, 'E']]list中混合字典排序,按照 rating 和 name進行排序的實現方法
gameresult = [{"name":"Bob", "wins":10, "losses":3, "rating":75.00},{"name":"David", "wins":3, "losses":5, "rating":57.00},{"name":"Carol", "wins":4, "losses":5, "rating":57.00},{"name":"Patty", "wins":9, "losses":3, "rating": 71.48}] from operator import itemgetter sorted_ed = sorted(gameresult, key=itemgetter("rating", "name")) print(sorted_ed)---[{'name': 'Carol', 'wins': 4, 'losses': 5, 'rating': 57.0}, {'name': 'David', 'wins': 3, 'losses': 5, 'rating': 57.0},{'name': 'Patty', 'wins': 9, 'losses': 3, 'rating': 71.48}, {'name': 'Bob', 'wins': 10, 'losses': 3, 'rating': 75.0}]不使用模塊,只通過wins進行排序
a = sorted(gameresult,key=lambda x:x["wins"]) print(a)---[{'wins': 3, 'losses': 5, 'name': 'David', 'rating': 57.0}, {'wins': 4, 'losses': 5, 'name': 'Carol', 'rating': 57.0}, {'wins': 9, 'losses': 3, 'name': 'Patty', 'rating': 71.48}, {'wins': 10, 'losses': 3, 'name': 'Bob', 'rating': 75.0}]字典中混合list排序
mydict = {'Li': ['M', 7], 'Zhang': ['E', 2],'Wang': ['P', 3], 'Du': ['C', 2],'Ma': ['C', 9], 'Zhe': ['H', 7]} from operator import itemgetter sorted_ed = sorted(mydict.items(), key=itemgetter(1)) print(sorted_ed)---[('Du', ['C', 2]), ('Ma', ['C', 9]), ('Zhang', ['E', 2]), ('Zhe', ['H', 7]), ('Li', ['M', 7]), ('Wang', ['P', 3])總結
以上是生活随笔為你收集整理的Python sort()和sorted()函数区别及用法详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: django中csrftoken跨站请求
- 下一篇: python3中numpy函数tile的