欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中對列表排序實例

 更新時間:2015年01月04日 09:01:50   投稿:junjie  
這篇文章主要介紹了Python中對列表排序實例,本文給出了9個List的排序實例,需要的朋友可以參考下

很多時候,我們需要對List進行排序,Python提供了兩個方法,對給定的List L進行排序:

方法1.用List的成員函數sort進行排序
方法2.用built-in函數sorted進行排序(從2.4開始)

這兩種方法使用起來差不多,以第一種為例進行講解:

從Python2.4開始,sort方法有了三個可選的參數,Python Library Reference里是這樣描述的

復制代碼 代碼如下:

cmp:cmp specifies a custom comparison function of two arguments (iterable elements) which should return a negative, zero or positive number depending on whether the first argument is considered smaller than, equal to, or larger than the second argument:
"cmp=lambda x,y: cmp(x.lower(), y.lower())"
key:key specifies a function of one argument that is used to extract a comparison key from each list element: "key=str.lower"
reverse:reverse is a boolean value. If set to True, then the list elements are sorted as if each comparison were reversed.In general, the key and reverse conversion processes are much faster than specifying an
equivalent cmp function. This is because cmp is called multiple times for each list element while key and reverse touch each element only once.

以下是sort的具體實例。
實例1:
復制代碼 代碼如下:

>>>L = [2,3,1,4]
>>>L.sort()
>>>L
>>>[1,2,3,4]

實例2:
復制代碼 代碼如下:

>>>L = [2,3,1,4]
>>>L.sort(reverse=True)
>>>L
>>>[4,3,2,1]

實例3:
復制代碼 代碼如下:

>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>L.sort(cmp=lambda x,y:cmp(x[1],y[1]))
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

實例4:
復制代碼 代碼如下:

>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>L.sort(key=lambda x:x[1])
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

實例5:
復制代碼 代碼如下:

>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>import operator
>>>L.sort(key=operator.itemgetter(1))
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

實例6:(DSU方法:Decorate-Sort-Undercorate)
復制代碼 代碼如下:

>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>A = [(x[1],i,x) for i,x in enumerate(L)] #i can confirm the stable sort
>>>A.sort()
>>>L = [s[2] for s in A]
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

以上給出了6中對List排序的方法,其中實例3.4.5.6能起到對以List item中的某一項
為比較關鍵字進行排序.
效率比較:
復制代碼 代碼如下:

cmp < DSU < key

通過實驗比較,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相當
多關鍵字比較排序:
實例7:
復制代碼 代碼如下:

>>>L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=lambda x:x[1])
>>> L
>>>[('d', 2), ('c', 2), ('b', 3), ('a', 4)]

我們看到,此時排序過的L是僅僅按照第二個關鍵字來排的,如果我們想用第二個關鍵字
排過序后再用第一個關鍵字進行排序呢?有兩種方法
實例8:
復制代碼 代碼如下:

>>> L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=lambda x:(x[1],x[0]))
>>> L
>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]

實例9:
復制代碼 代碼如下:

>>> L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=operator.itemgetter(1,0))
>>> L
>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]

為什么實例8能夠工作呢?原因在于tuple是的比較從左到右之一比較的,比較完第一個,如果
相等,比較第二個

相關文章

  • python httpx的具體使用

    python httpx的具體使用

    本文主要介紹了python httpx的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • jupyter notebook的安裝與使用詳解

    jupyter notebook的安裝與使用詳解

    這篇文章主要介紹了jupyter notebook的安裝與使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • Python繪制散點圖的教程詳解

    Python繪制散點圖的教程詳解

    散點圖是指在回歸分析中,數據點在直角坐標系平面上的分布圖,散點圖表示因變量隨自變量而變化的大致趨勢,據此可以選擇合適的函數對數據點進行擬合。本文將用Python繪制散點圖,需要的可以參考一下
    2022-03-03
  • Django使用消息提示簡單的彈出個對話框實例

    Django使用消息提示簡單的彈出個對話框實例

    今天小編就為大家分享一篇Django使用消息提示簡單的彈出個對話框實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 樸素貝葉斯算法的python實現方法

    樸素貝葉斯算法的python實現方法

    這篇文章主要介紹了樸素貝葉斯算法的python實現方法,詳細分析了樸素貝葉斯算法的特性及用途,并給出了基于python的實現方法,需要的朋友可以參考下
    2014-11-11
  • Python 進程之間共享數據(全局變量)的方法

    Python 進程之間共享數據(全局變量)的方法

    今天小編就為大家分享一篇Python 進程之間共享數據(全局變量)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • numpy創(chuàng)建神經網絡框架

    numpy創(chuàng)建神經網絡框架

    本文介紹了使用numpy從零搭建了一個類似于pytorch的深度學習框架,可以用在很多地方,有需要的朋友可以自行參考一下
    2021-08-08
  • Python實現ElGamal加密算法的示例代碼

    Python實現ElGamal加密算法的示例代碼

    ElGamal加密算法是一個基于迪菲-赫爾曼密鑰交換的非對稱加密算法。這篇文章通過示例代碼給大家介紹Python實現ElGamal加密算法的相關知識,感興趣的朋友一起看看吧
    2020-06-06
  • django用戶注冊、登錄、注銷和用戶擴展的示例

    django用戶注冊、登錄、注銷和用戶擴展的示例

    本篇文章主要介紹了django用戶注冊、登錄、注銷和用戶擴展的示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • python?random模塊常用函數基礎教程

    python?random模塊常用函數基礎教程

    這篇文章主要為大家介紹了python?random模塊常用函數基礎教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06

最新評論