Re: [問題] 關於list排序
也參考過回文的文章 跟參考文章
對於以下的解釋還是不解(雖然會使用了)
想請板友們幫個忙:
"
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
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章
5
15