Re: [問題] 關於list排序

看板Python作者 (阿真)時間15年前 (2009/11/20 05:38), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/5 (看更多)
也參考過回文的文章 跟參考文章 對於以下的解釋還是不解(雖然會使用了) 想請板友們幫個忙: " key 的使用方式比前面 cmp 的方式來的直覺,而且速度較快, 因為排序的時候,只要需要比較的動作就會呼叫 cmp, 而 key 只會被呼叫 n 次,n 是序列的長度,所以 key 的速度較快。 " 我的想法是 比方有三個數 [小 ,大 ,中] cmp感覺是 先抓 小 大 二個比 把小放在第一位 再抓 大 中 二個比 再抓 小 中 二個比 把中放在第二位 把大放在第三位 二個疑問: 1. 對於key的比法(還是說 應該稱作 "準則") 是類似cmp這樣嗎?怎麼比的呢? 2. 又對於最原本的sort()方法 是用最佳化的比法 還是最簡單的比法呢?? ※ 引述《cakewalks (大雪崩)》之銘言: : ※ 引述《dotwsc (海上生明月)》之銘言: : : 不知道這是不是你要的? : : [[1, 3, 5], [6, 4, 2], [9, 4, 3]] : : [[6, 4, 2], [9, 4, 3], [1, 3, 5]] : 用 cmp 比較慢,而且 cmp 已經被 Python 3.0 淘汰了。 : 如果要依第二個元素大小排序的話 : def my_key(item): : return item[1] : p.sort(key=my_key) : 如果要依第二個第三個第一個元素大小排序的話 : def my_key(item): : return (item[1], item[2], item[0]) : p.sort(key=my_key) : 如果不想定義函式,可用 lambda 或是 : from operator import itemgetter : p.sort(key=itemgetter(1,2,0)) : 更詳細的內容可以參見拙著 : http://descriptor.blogspot.com/2008/12/python-idiom-sort.html -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.63.180
文章代碼(AID): #1B1RhEfB (Python)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 4 之 5 篇):
文章代碼(AID): #1B1RhEfB (Python)