欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

算法與數據結構(十六):Python 內建排序方法總結

系統 1611 0

Python 內建排序機制很強大,此處對其進行一個較為系統的使用總結。

1. 排序方法介紹

Python中有 2 個排序函數,一個是 list 內置的 sort() 方法,另一個是全局的 sorted() 方法

            
              
                sorted
              
              
                (
              
              iterable
              
                ,
              
              key
              
                =
              
              
                None
              
              
                ,
              
              reverse
              
                =
              
              
                False
              
              
                )
              
              
                #返回排好序的新列表,不改變對象本身,默認升序;reverse:-True降序 -False 正序對所有可迭代的對象均有效 
              
              
                list
              
              
                .
              
              sort
              
                (
              
              key
              
                =
              
              
                None
              
              
                ,
              
              reverse
              
                =
              
              
                False
              
              
                )
              
              
                #將list自身進行排序,不返回新的list對象,默認升序;reverse:-True降序 -False 正序
              
            
          

2 基本的列表排序

1) list.sort() 排序

            
              data 
              
                =
              
              
                [
              
              
                5
              
              
                ,
              
              
                7
              
              
                ,
              
              
                9
              
              
                ,
              
              
                3
              
              
                ,
              
              
                -
              
              
                6
              
              
                ,
              
              
                -
              
              
                7
              
              
                ,
              
              
                -
              
              
                8
              
              
                ,
              
              
                -
              
              
                9
              
              
                ,
              
              
                3
              
              
                ,
              
              
                -
              
              
                8
              
              
                ]
              
              
result 
              
                =
              
               data
              
                .
              
              sort
              
                (
              
              
                )
              
              
                print
              
              
                (
              
              data
              
                )
              
              
                #結果為 [-9, -8, -8, -7, -6, 3, 3, 5, 7, 9]
              
              
                print
              
              
                (
              
              result
              
                )
              
              
                #結果為None
              
            
          

2) sorted() 排序

            
              data 
              
                =
              
              
                [
              
              
                5
              
              
                ,
              
              
                7
              
              
                ,
              
              
                9
              
              
                ,
              
              
                3
              
              
                ,
              
              
                -
              
              
                6
              
              
                ,
              
              
                -
              
              
                7
              
              
                ,
              
              
                -
              
              
                8
              
              
                ,
              
              
                -
              
              
                9
              
              
                ,
              
              
                3
              
              
                ,
              
              
                -
              
              
                8
              
              
                ]
              
              
result 
              
                =
              
              
                sorted
              
              
                (
              
              data
              
                )
              
              
                print
              
              
                (
              
              data
              
                )
              
              
                #結果為 [5, 7, 9, 3, -6, -7, -8, -9, 3, -8]
              
              
                print
              
              
                (
              
              result
              
                )
              
              
                #結果為 [-9, -8, -8, -7, -6, 3, 3, 5, 7, 9]
              
            
          

3 以 tuple 作為 list 的元素

在默認情況下 sort sorted 函數接收的參數是元組時,它將會先按元組的第一個元素進行排序再按第二個元素進行排序,再按第三個、第四個…依次排序。
我們通過一個簡單的例子來了解它,以下面這個list為例:

            
              data 
              
                =
              
              
                [
              
              
                (
              
              
                1
              
              
                ,
              
              
                'B'
              
              
                )
              
              
                ,
              
              
                (
              
              
                1
              
              
                ,
              
              
                'A'
              
              
                )
              
              
                ,
              
              
                (
              
              
                2
              
              
                ,
              
              
                'A'
              
              
                )
              
              
                ,
              
              
                (
              
              
                0
              
              
                ,
              
              
                'B'
              
              
                )
              
              
                ,
              
              
                (
              
              
                0
              
              
                ,
              
              
                'a'
              
              
                )
              
              
                ]
              
            
          

我們通過 sorted() 對它進行排序

            
              data 
              
                =
              
              
                [
              
              
                (
              
              
                1
              
              
                ,
              
              
                'B'
              
              
                )
              
              
                ,
              
              
                (
              
              
                1
              
              
                ,
              
              
                'A'
              
              
                )
              
              
                ,
              
              
                (
              
              
                2
              
              
                ,
              
              
                'A'
              
              
                )
              
              
                ,
              
              
                (
              
              
                0
              
              
                ,
              
              
                'B'
              
              
                )
              
              
                ,
              
              
                (
              
              
                0
              
              
                ,
              
              
                'a'
              
              
                )
              
              
                ]
              
              
result 
              
                =
              
              
                sorted
              
              
                (
              
              data
              
                )
              
              
                print
              
              
                (
              
              data
              
                )
              
              
                #結果為 [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')]
              
              
                print
              
              
                (
              
              result
              
                )
              
              
                #結果為 [(0, 'B'), (0, 'a'), (1, 'A'), (1, 'B'), (2, 'A')]
              
            
          

會發現排序后的結果中 (0, 'B') (0, 'a') 的前面。這是因為在按元組第一個元素排好之后,將 (0, 'B') , (0, 'a') 按第二個元素進行排序了,而 'B' 的 ASCII 編碼比 'a' 小,所以 (0, 'B') 就排在 (0, 'a') 的前面了。

那如何想要讓它排序時不分大小寫呢?

這就要用到 sort 方法和 sorted 方法里的 key 參數了。
我們來看一下具體的實現:

            
              data 
              
                =
              
              
                [
              
              
                (
              
              
                1
              
              
                ,
              
              
                'B'
              
              
                )
              
              
                ,
              
              
                (
              
              
                1
              
              
                ,
              
              
                'A'
              
              
                )
              
              
                ,
              
              
                (
              
              
                2
              
              
                ,
              
              
                'A'
              
              
                )
              
              
                ,
              
              
                (
              
              
                0
              
              
                ,
              
              
                'B'
              
              
                )
              
              
                ,
              
              
                (
              
              
                0
              
              
                ,
              
              
                'a'
              
              
                )
              
              
                ]
              
              
                #利用參數key來規定排序的規則
              
              
result 
              
                =
              
              
                sorted
              
              
                (
              
              data
              
                ,
              
              key
              
                =
              
              
                lambda
              
               x
              
                :
              
              
                (
              
              x
              
                [
              
              
                0
              
              
                ]
              
              
                ,
              
              x
              
                [
              
              
                1
              
              
                ]
              
              
                .
              
              lower
              
                (
              
              
                )
              
              
                )
              
              
                )
              
              
                print
              
              
                (
              
              data
              
                )
              
              
                #結果為 [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')]
              
              
                print
              
              
                (
              
              result
              
                )
              
              
                #結果為 [(0, 'a'), (0, 'B'), (1, 'A'), (1, 'B'), (2, 'A')]
              
            
          

其中的 lambda x:(x[0],x[1].lower() 可以理解為一個匿名函數;
其功能類似于:

            
              
                def
              
              
                fun
              
              
                (
              
              x
              
                )
              
              
                return
              
              
                (
              
              x
              
                [
              
              
                0
              
              
                ]
              
              
                ,
              
              x
              
                [
              
              
                1
              
              
                ]
              
              
                .
              
              lower
              
                (
              
              
                )
              
              
                )
              
            
          

如果想要以字母作為第一排序規則,并且字母大小寫不敏感,該怎么實現?
這就能要運用到之前所講到的 “在默認情況下sort和sorted函數接收的參數是元組時,它將會先按元組的第一個元素進行排序再按第二個元素進行排序,再按第三個、第四個…依次排序。”
再配合lambda返回一個自定義tuple;
代碼如下:

            
              data 
              
                =
              
              
                [
              
              
                (
              
              
                1
              
              
                ,
              
              
                'B'
              
              
                )
              
              
                ,
              
              
                (
              
              
                1
              
              
                ,
              
              
                'A'
              
              
                )
              
              
                ,
              
              
                (
              
              
                2
              
              
                ,
              
              
                'A'
              
              
                )
              
              
                ,
              
              
                (
              
              
                0
              
              
                ,
              
              
                'B'
              
              
                )
              
              
                ,
              
              
                (
              
              
                0
              
              
                ,
              
              
                'a'
              
              
                )
              
              
                ]
              
              
                #將x[1].lower()作為返回元組里的第一個元素,按照sorted的排序規律,就會先按字母排序,再按數字排序了
              
              
result 
              
                =
              
              
                sorted
              
              
                (
              
              data
              
                ,
              
              key
              
                =
              
              
                lambda
              
               x
              
                :
              
              
                (
              
              x
              
                [
              
              
                1
              
              
                ]
              
              
                .
              
              lower
              
                (
              
              
                )
              
              
                ,
              
              x
              
                [
              
              
                0
              
              
                ]
              
              
                )
              
              
                )
              
              
                print
              
              
                (
              
              data
              
                )
              
              
                #結果為 [(1, 'B'), (1, 'A'), (2, 'A'), (0, 'B'), (0, 'a')] 
              
              
                print
              
              
                (
              
              result
              
                )
              
              
                #結果為 [(0, 'a'), (1, 'A'), (2, 'A'), (0, 'B'), (1, 'B')]
              
            
          

4. 以 dict 作為 list 的元素

這個 list 里的元素是 dict 形式,每個 dict 都存有 姓名 升高 現在想要以升高進行升序排列:

            
              data 
              
                =
              
              
                [
              
              
                {
              
              
                'name'
              
              
                :
              
              
                '張三'
              
              
                ,
              
              
                'height'
              
              
                :
              
              
                175
              
              
                }
              
              
                ,
              
              
                {
              
              
                'name'
              
              
                :
              
              
                '李四'
              
              
                ,
              
              
                'height'
              
              
                :
              
              
                165
              
              
                }
              
              
                ,
              
              
                {
              
              
                'name'
              
              
                :
              
              
                '王五'
              
              
                ,
              
              
                'height'
              
              
                :
              
              
                185
              
              
                }
              
              
                ]
              
              
                #將x['height']最為返回tuple的第個一元素
              
              
result 
              
                =
              
              
                sorted
              
              
                (
              
              data
              
                ,
              
              key
              
                =
              
              
                lambda
              
               x
              
                :
              
              
                (
              
              x
              
                [
              
              
                'height'
              
              
                ]
              
              
                ,
              
              x
              
                [
              
              
                'name'
              
              
                ]
              
              
                )
              
              
                )
              
              
                print
              
              
                (
              
              data
              
                )
              
              
                #結果為 
              
              
                print
              
              
                (
              
              result
              
                )
              
              
                #data   結果:[{'name': '張三', 'height': 175}, {'name': '李四', 'height': 165}, {'name': '王五', 'height': 185}]
              
              
                #result 結果:[{'name': '李四', 'height': 165}, {'name': '張三', 'height': 175}, {'name': '王五', 'height': 185}]
              
            
          

5. 字典排序

按照 key 進行排序

            
              dict1 
              
                =
              
              
                {
              
              
                1
              
              
                :
              
              
                0
              
              
                ,
              
              
                2
              
              
                :
              
              
                3
              
              
                ,
              
              
                4
              
              
                :
              
              
                1
              
              
                }
              
              
res 
              
                =
              
              
                sorted
              
              
                (
              
              dict1
              
                .
              
              items
              
                (
              
              
                )
              
              
                ,
              
               key
              
                =
              
              
                lambda
              
               d
              
                :
              
               d
              
                [
              
              
                0
              
              
                ]
              
              
                )
              
            
          

按照 value 進行排序

            
              dict1 
              
                =
              
              
                {
              
              
                1
              
              
                :
              
              
                0
              
              
                ,
              
              
                2
              
              
                :
              
              
                3
              
              
                ,
              
              
                4
              
              
                :
              
              
                1
              
              
                }
              
              
res 
              
                =
              
              
                sorted
              
              
                (
              
              dict1
              
                .
              
              items
              
                (
              
              
                )
              
              
                ,
              
               key
              
                =
              
              
                lambda
              
               d
              
                :
              
               d
              
                [
              
              
                1
              
              
                ]
              
              
                )
              
            
          

參考文獻:

[1] https://blog.csdn.net/qq_24076135/article/details/78550898

[2] https://segmentfault.com/a/1190000004959880


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!?。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产在线精品观看 | 广西美女一级毛片 | 又黄又爽免费无遮挡在线观看 | 天天看天天爽天天摸天天添 | 精品美女在线观看视频在线观看 | 亚洲日韩精品AV无码富二代 | 男女激情视频在线观看 | 凛子小姐想试试 | av天空| 久久婷婷色一区二区三区 | 天天干夜夜操 | 一区二区国产在线播放 | 中文字幕a∨在线乱码免费看 | 国产精品国产三级国产aⅴ无密码 | 国产精品人成福利视频 | 国产精品中文字幕在线 | 精品久久久久久久久久久久久久久 | 91精品国产综合久久久久久 | 一本色道久久88综合亚洲精品高清 | 日本大片久久久高清免费看 | 国产免费观看一级国产 | 性69交片免费看 | 日本高清视频网址 | 日韩欧美亚洲 | 狠狠狠狠狠狠狠狠狠狠 | 日本在线观看视频网站 | 日韩六九视频 | 人人狠狠综合88综合久久 | 蜜桃日韩| 一级一级一级一级毛片 | 免费久久99精品国产婷婷六月 | 一区二区在线不卡 | 91精品国产91久久久久久最新 | 亚洲精品久久久久久久久久吃药 | 久草久草在线视频 | 一级黄a | 久久99草 | 精品亚洲永久免费精品 | 性欧美xxxx极品摘花 | 99久久免费中文字幕精品 | 日韩欧美亚洲综合久久99e |