課程
/后端開發
/Python
/python進階
about 不是應該比 bob 大嗎,怎么排序的???
2018-11-15
源自:python進階 2-7
正在回答
sorted()是高階函數,可以接收一個比較函數來實現自定義排序,比較函數的定義是,傳入兩個待比較的元素 x, y,如果 x 應該排在 y 的前面,返回 -1,如果 x 應該排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。'a'的ASCII碼是97,'b'的ASCII碼是98,由首字母的ASCII碼進行比較,根據自定義的比較函數進行排序。
weibo_墨鴉墨鴉1_mrAN04 提問者
高階函數sorted()不是按照ASCII碼加起來進行排序的,而是從首字母開始進行ASCII碼排序,就像手機電話通訊錄里面的聯系人,按照聯系人的姓名首字母進行歸類排序,而不是按照聯系人姓名的ASCII碼加起來進行排序,這樣的排序算法和數學里面的數字大小比較不一樣的(數學中1<12<123...,而排序中先從首字母進行比較:拿'a'、'ab'、'b'進行比較,首字母ASCII碼:a(97)<b(98),如果按照從小到大排序,'a'和'ab'就排在'b'前面了,而'a'與'ab'首字母一樣,接著比較第二個,由于'a'沒有第二個字母了而'ab'含有第二個字母,因此'a'就排在'ab'前面了,最終所得的從小到大的順序應該是:'a'、'ab'、'b')
舉報
學習函數式、模塊和面向對象編程,掌握Python高級程序設計
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-11-15
sorted()是高階函數,可以接收一個比較函數來實現自定義排序,比較函數的定義是,傳入兩個待比較的元素 x, y,如果 x 應該排在 y 的前面,返回 -1,如果 x 應該排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。'a'的ASCII碼是97,'b'的ASCII碼是98,由首字母的ASCII碼進行比較,根據自定義的比較函數進行排序。
2018-11-19
高階函數sorted()不是按照ASCII碼加起來進行排序的,而是從首字母開始進行ASCII碼排序,就像手機電話通訊錄里面的聯系人,按照聯系人的姓名首字母進行歸類排序,而不是按照聯系人姓名的ASCII碼加起來進行排序,這樣的排序算法和數學里面的數字大小比較不一樣的(數學中1<12<123...,而排序中先從首字母進行比較:拿'a'、'ab'、'b'進行比較,首字母ASCII碼:a(97)<b(98),如果按照從小到大排序,'a'和'ab'就排在'b'前面了,而'a'與'ab'首字母一樣,接著比較第二個,由于'a'沒有第二個字母了而'ab'含有第二個字母,因此'a'就排在'ab'前面了,最終所得的從小到大的順序應該是:'a'、'ab'、'b')