python 关于排序的问题
生活随笔
收集整理的這篇文章主要介紹了
python 关于排序的问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
排序
簡單講一下排序的兩個方法(python自帶的)
-
一個是iterable.sort(key, reverse)
-
一個sorted(iterable, key, reverse)
主要的區別就是前者直接對數據進行覆蓋式的排序,后者是用一個新的變量接受排序的返回值,原數據不影響
另外一點:他們接受的參數一個是key(排序的關鍵字),一個是reverse(是否降序,True為降序),默認是升序(默認是False)
接下來我們來說一下排序的一些技巧吧
In [8]: a = [('wjh', 18, 180), ('zy', 17, 180), ('mm', 18, 185), ('xx', 16, 180)]In [9]: a Out[9]: [('wjh', 18, 180), ('zy', 17, 180), ('mm', 18, 185), ('xx', 16, 180)]定義了一個包含四個元組的列表,分別對應姓名,年齡,身高(這里(不可變)也體現了元組的強大)
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' In [13]: a Out[13]: [('wjh', 18, 180), ('zy', 17, 180), ('mm', 18, 185), ('xx', 16, 180)]In [14]: sorted(a) Out[14]: [('mm', 18, 185), ('wjh', 18, 180), ('xx', 16, 180), ('zy', 17, 180)]直接進行排序,可以看出它選擇了索引為0的元素進行了排序(字符串排序abcd…xyz)
In [16]: sorted(a, key=lambda li: li[1]) Out[16]: [('xx', 16, 180), ('zy', 17, 180), ('wjh', 18, 180), ('mm', 18, 185)]現在定義對索引為1的元素(就是年齡)進行排序,可以看出年齡相同時,后面的身高默認按照升序進行了排序
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:531509025 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' In [21]: sorted(a, key=lambda li: li[1], reverse=True) Out[21]: [('wjh', 18, 180), ('mm', 18, 185), ('zy', 17, 180), ('xx', 16, 180)]現在對年齡進行降序排序,可以看出,相同的年齡,后面還是默認按照升序排序了
In [31]: sorted(a, key=lambda li: (li[1], li[2])) Out[31]: [('xx', 16, 180), ('zy', 17, 180), ('wjh', 18, 180), ('mm', 18, 185)]現在我們先按照年齡升序排序,再按照身高升序排序,也實現了
這里也說明排序可以接受多個參數的排序
然后我們來試試降序
In [32]: sorted(a, key=lambda li: (li[1], li[2]), reverse=True) Out[32]: [('mm', 18, 185), ('wjh', 18, 180), ('zy', 17, 180), ('xx', 16, 180)]格式就是這么個格式,是可以多參數進行升降序排序的
總結
以上是生活随笔為你收集整理的python 关于排序的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python后端开发工程师面试题
- 下一篇: Python 字符串与列表去重