最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中List的sort方法指南

 更新時(shí)間:2014年09月01日 09:00:56   投稿:hebedich  
我們需要對(duì)List進(jìn)行排序,Python提供了兩個(gè)方法:1.用List的成員函數(shù)sort進(jìn)行排序;2.用built-in函數(shù)sorted進(jìn)行排序,今天我們就來(lái)探討下這2個(gè)方法

簡(jiǎn)單記一下python中List的sort方法(或者sorted內(nèi)建函數(shù))的用法。 

List的元素可以是各種東西,字符串,字典,自己定義的類等。

sorted函數(shù)用法如下:

sorted(data, cmp=None, key=None, reverse=False) 

其中,data是待排序數(shù)據(jù),可以使List或者iterator, cmp和key都是函數(shù),這兩個(gè)函數(shù)作用與data的元素上產(chǎn)生一個(gè)結(jié)果,sorted方法根據(jù)這個(gè)結(jié)果來(lái)排序。

cmp(e1, e2) 是帶兩個(gè)參數(shù)的比較函數(shù), 返回值: 負(fù)數(shù): e1 < e2, 0: e1 == e2, 正數(shù): e1 > e2. 默認(rèn)為 None, 即用內(nèi)建的比較函數(shù).
key 是帶一個(gè)參數(shù)的函數(shù), 用來(lái)為每個(gè)元素提取比較值. 默認(rèn)為 None, 即直接比較每個(gè)元素.
通常, key 和 reverse 比 cmp 快很多, 因?yàn)閷?duì)每個(gè)元素它們只處理一次; 而 cmp 會(huì)處理多次.

通過(guò)例子來(lái)說(shuō)明sorted的用法:

1. 對(duì)由tuple組成的List排序

>>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10),] 

用key函數(shù)排序(lambda的用法見(jiàn) 注釋1)

>>> sorted(students, key=lambda student : student[2])  # sort by age 
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] 

用cmp函數(shù)排序

>>> sorted(students, cmp=lambda x,y : cmp(x[2], y[2])) # sort by age 
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)] 

用 operator 函數(shù)來(lái)加快速度, 上面排序等價(jià)于:(itemgetter的用法見(jiàn) 注釋2)

>>> from operator import itemgetter, attrgetter 
>>> sorted(students, key=itemgetter(2)) 

用 operator 函數(shù)進(jìn)行多級(jí)排序

>>> sorted(students, key=itemgetter(1,2)) # sort by grade then by age 
[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)] 

2. 對(duì)由字典排序

>>> d = {'data1':3, 'data2':1, 'data3':2, 'data4':4} 
>>> sorted(d.iteritems(), key=itemgetter(1), reverse=True) 
[('data4', 4), ('data1', 3), ('data3', 2), ('data2', 1)] 

注釋1
參考:http://jasonwu.me/2011/10/29/introduce-to-python-lambda.html

注釋2
參考:http://ar.newsmth.net/thread-90745710c90cf1.html

class itemgetter(__builtin__.object) 
| itemgetter(item, ...) --> itemgetter object 
| 
| Return a callable object that fetches the given item(s) from its operand. 
| After, f=itemgetter(2), the call f(r) returns r[2]. 
| After, g=itemgetter(2,5,3), the call g(r) returns (r[2], r[5], r[3]) 

相當(dāng)于

def itemgetter(i,*a):  
  def func(obj):  
    r = obj[i]  
    if a:  
      r = (r,) + tuple(obj[i] for i in a)  
    return r  
  return func  
 
>>> a = [1,2,3]  
>>> b=operator.itemgetter(1)  
>>> b(a)  
2  
>>> b=operator.itemgetter(1,0)  
>>> b(a)  
(2, 1)  
>>> b=itemgetter(1)  
>>> b(a)  
2  
>>> b=itemgetter(1,0)  
>>> b(a)  
(2, 1)  

參考資料:
1. http://www.linuxso.com/linuxbiancheng/13340.html
2. http://www.douban.com/note/13460891/

相關(guān)文章

  • python求定積分之quad函數(shù)詳解

    python求定積分之quad函數(shù)詳解

    這篇文章主要介紹了python求定積分之quad函數(shù)詳解,SciPy下實(shí)現(xiàn)求函數(shù)的積分的函數(shù)的基本使用,積分,高等數(shù)學(xué)里有大量的講述,基本意思就是求曲線下面積之和,需要的朋友可以參考下
    2023-08-08
  • peewee創(chuàng)建連接前的前置操作wireshark抓包實(shí)現(xiàn)

    peewee創(chuàng)建連接前的前置操作wireshark抓包實(shí)現(xiàn)

    這篇文章主要為大家介紹了peewee創(chuàng)建連接前的前置操作wireshark?抓包實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Python 讀取用戶指令和格式化打印實(shí)現(xiàn)解析

    Python 讀取用戶指令和格式化打印實(shí)現(xiàn)解析

    這篇文章主要介紹了Python 讀取用戶指令和格式化打印實(shí)現(xiàn)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • python繪圖如何自定義x軸

    python繪圖如何自定義x軸

    這篇文章主要介紹了python繪圖如何自定義x軸問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python3.8+django2+celery5.2.7環(huán)境準(zhǔn)備(python測(cè)試開(kāi)發(fā)django)

    python3.8+django2+celery5.2.7環(huán)境準(zhǔn)備(python測(cè)試開(kāi)發(fā)django)

    這篇文章主要介紹了python測(cè)試開(kāi)發(fā)django之python3.8+django2+celery5.2.7環(huán)境準(zhǔn)備工作,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • Python中將字符串轉(zhuǎn)換為變量名的示例詳解

    Python中將字符串轉(zhuǎn)換為變量名的示例詳解

    在某些情況下,您可能希望將字符串動(dòng)態(tài)轉(zhuǎn)換為變量名,在本文中,我們將通過(guò)四個(gè)簡(jiǎn)單的示例來(lái)探索如何在Python中將字符串轉(zhuǎn)換為變量名,需要的朋友可以參考下
    2024-10-10
  • JupyterNotebook 輸出窗口的顯示效果調(diào)整方法

    JupyterNotebook 輸出窗口的顯示效果調(diào)整方法

    這篇文章主要介紹了JupyterNotebook 輸出窗口的顯示效果調(diào)整方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • Pycharm 設(shè)置默認(rèn)解釋器路徑和編碼格式的操作

    Pycharm 設(shè)置默認(rèn)解釋器路徑和編碼格式的操作

    這篇文章主要介紹了Pycharm 設(shè)置默認(rèn)解釋器路徑和編碼格式的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • Pytest測(cè)試框架基本使用方法詳解

    Pytest測(cè)試框架基本使用方法詳解

    這篇文章主要介紹了Pytest測(cè)試框架基本使用方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • python新手學(xué)習(xí)可變和不可變對(duì)象

    python新手學(xué)習(xí)可變和不可變對(duì)象

    在本篇文章里小編給大家分享了是一篇關(guān)于python可變對(duì)象和不可變對(duì)象的基礎(chǔ)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以參考下。
    2020-06-06

最新評(píng)論

临沧市| 北京市| 彝良县| 五台县| 兴海县| 八宿县| 浮山县| 安多县| 慈溪市| 清镇市| 民勤县| 柳州市| 榆树市| 章丘市| 西畴县| 台江县| 靖远县| 永清县| 阿尔山市| 新兴县| 任丘市| 定远县| 会昌县| 高州市| 房产| 神木县| 昭觉县| 桂平市| 金阳县| 怀化市| 湘潭市| 长葛市| 慈利县| 德昌县| 邵阳县| 沅陵县| 武强县| 宁蒗| 西盟| 通许县| 杭锦后旗|