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

python中sort和sorted排序的實(shí)例方法

 更新時(shí)間:2019年08月26日 16:02:17   作者:shengguorui  
在本篇文章中小編給大家?guī)淼氖顷P(guān)于python中sort和sorted排序的實(shí)例方法以及相關(guān)知識(shí)點(diǎn),有需要的朋友們可以學(xué)習(xí)下。

Python list內(nèi)置sort()方法用來排序,也可以用python內(nèi)置的全局sorted()方法來對(duì)可迭代的序列排序生成新的序列。

1)排序基礎(chǔ)

簡單的升序排序是非常容易的。只需要調(diào)用sorted()方法。它返回一個(gè)新的list,新的list的元素基于小于運(yùn)算符(__lt__)來排序。

>>> sorted([5, 2, 3, 1, 4])
[1, 2, 3, 4, 5]

你也可以使用list.sort()方法來排序,此時(shí)list本身將被修改。通常此方法不如sorted()方便,但是如果你不需要保留原來的list,此方法將更有效。

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

另一個(gè)不同就是list.sort()方法僅被定義在list中,相反地sorted()方法對(duì)所有的可迭代序列都有效。

>>> sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})
[1, 2, 3, 4, 5]

2)key參數(shù)/函數(shù)

從python2.4開始,list.sort()和sorted()函數(shù)增加了key參數(shù)來指定一個(gè)函數(shù),此函數(shù)將在每個(gè)元素比較前被調(diào)用。 例如通過key指定的函數(shù)來忽略字符串的大小寫:

>>> sorted("This is a test string from Andrew".split(), key=str.lower)
['a', 'Andrew', 'from', 'is', 'string', 'test', 'This']

key參數(shù)的值為一個(gè)函數(shù),此函數(shù)只有一個(gè)參數(shù)且返回一個(gè)值用來進(jìn)行比較。這個(gè)技術(shù)是快速的因?yàn)閗ey指定的函數(shù)將準(zhǔn)確地對(duì)每個(gè)元素調(diào)用。

更廣泛的使用情況是用復(fù)雜對(duì)象的某些值來對(duì)復(fù)雜對(duì)象的序列排序,例如:

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

同樣的技術(shù)對(duì)擁有命名屬性的復(fù)雜對(duì)象也適用,例如:

>>> class Student:
    def __init__(self, name, grade, age):
        self.name = name
        self.grade = grade
        self.age = age
    def __repr__(self):
        return repr((self.name, self.grade, self.age))
>>> student_objects = [
    Student('john', 'A', 15),
    Student('jane', 'B', 12),
    Student('dave', 'B', 10),
]
>>> sorted(student_objects, key=lambda student: student.age)  # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

3)Operator 模塊函數(shù)

上面的key參數(shù)的使用非常廣泛,因此python提供了一些方便的函數(shù)來使得訪問方法更加容易和快速。operator模塊有itemgetter,attrgetter,從2.6開始還增加了methodcaller方法。使用這些方法,上面的操作將變得更加簡潔和快速:

>>> from operator import itemgetter, attrgetter
>>> sorted(student_tuples, key=itemgetter(2))
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
>>> sorted(student_objects, key=attrgetter('age'))
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

operator模塊還允許多級(jí)的排序,例如,先以grade,然后再以age來排序:

>>> sorted(student_tuples, key=itemgetter(1,2))
[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]
>>> sorted(student_objects, key=attrgetter('grade', 'age'))
[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]

4)升序和降序

list.sort()和sorted()都接受一個(gè)參數(shù)reverse(True or False)來表示升序或降序排序。例如對(duì)上面的student降序排序如下:

>>> sorted(student_tuples, key=itemgetter(2), reverse=True)
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
>>> sorted(student_objects, key=attrgetter('age'), reverse=True)
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

5)排序的穩(wěn)定性和復(fù)雜排序

從python2.2開始,排序被保證為穩(wěn)定的。意思是說多個(gè)元素如果有相同的key,則排序前后他們的先后順序不變。

>>> data = [('red', 1), ('blue', 1), ('red', 2), ('blue', 2)]
>>> sorted(data, key=itemgetter(0))
[('blue', 1), ('blue', 2), ('red', 1), ('red', 2)]

注意在排序后'blue'的順序被保持了,即'blue', 1在'blue', 2的前面。

更復(fù)雜地你可以構(gòu)建多個(gè)步驟來進(jìn)行更復(fù)雜的排序,例如對(duì)student數(shù)據(jù)先以grade降序排列,然后再以age升序排列。

>>> s = sorted(student_objects, key=attrgetter('age'))   # sort on secondary key
>>> sorted(s, key=attrgetter('grade'), reverse=True)    # now sort on primary key, descending
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

以上就是本次介紹的全部實(shí)例知識(shí)點(diǎn)內(nèi)容,感謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Django haystack實(shí)現(xiàn)全文搜索代碼示例

    Django haystack實(shí)現(xiàn)全文搜索代碼示例

    這篇文章主要介紹了Django haystack實(shí)現(xiàn)全文搜索代碼示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 編寫自定義的Django模板加載器的簡單示例

    編寫自定義的Django模板加載器的簡單示例

    這篇文章主要介紹了編寫自定義的Django模板加載器的簡單示例,Django是各色人氣Python框架中最為著名的一個(gè),需要的朋友可以參考下
    2015-07-07
  • python elasticsearch環(huán)境搭建詳解

    python elasticsearch環(huán)境搭建詳解

    在本篇文章里小編給大家整理的是關(guān)于python elasticsearch環(huán)境搭建的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以參考下。
    2019-09-09
  • 詳解python中常用配置的讀取方法

    詳解python中常用配置的讀取方法

    常見的應(yīng)用配置方式有環(huán)境變量和配置文件,對(duì)于微服務(wù)應(yīng)用,還會(huì)從配置中心加載配置,本文主要介紹了從環(huán)境變量、.env文件、.ini文件、.yaml文件等文件的讀取配置,需要的可以參考下
    2024-01-01
  • 基于Python編寫一個(gè)有趣的進(jìn)程勾選器(Process?Selector)

    基于Python編寫一個(gè)有趣的進(jìn)程勾選器(Process?Selector)

    本文主要介紹了如何利用Python編寫一個(gè)有趣的進(jìn)程勾選器,可以在Checklistbox中列出系統(tǒng)中正在運(yùn)行的進(jìn)程的名稱和PID,并允許用戶選擇進(jìn)程并將其保存到文本文件中,需要的可以參考一下
    2023-05-05
  • Python讀取數(shù)據(jù)集并消除數(shù)據(jù)中的空行方法

    Python讀取數(shù)據(jù)集并消除數(shù)據(jù)中的空行方法

    今天小編就為大家分享一篇Python讀取數(shù)據(jù)集并消除數(shù)據(jù)中的空行方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python中優(yōu)雅處理JSON文件的方法實(shí)例

    Python中優(yōu)雅處理JSON文件的方法實(shí)例

    JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,JSON采用完全獨(dú)立于語言的文本格式,但是也使用了類似于C語言家族的習(xí)慣,這篇文章主要給大家介紹了關(guān)于Python中優(yōu)雅處理JSON文件的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • Python pandas如何獲取數(shù)據(jù)的行數(shù)和列數(shù)

    Python pandas如何獲取數(shù)據(jù)的行數(shù)和列數(shù)

    這篇文章主要介紹了Python pandas如何獲取數(shù)據(jù)的行數(shù)和列數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 將Python的Django框架與認(rèn)證系統(tǒng)整合的方法

    將Python的Django框架與認(rèn)證系統(tǒng)整合的方法

    這篇文章主要介紹了將Python的Django框架與認(rèn)證系統(tǒng)整合的方法,包括指定認(rèn)證后臺(tái)和編寫認(rèn)證后臺(tái)等內(nèi)容,需要的朋友可以參考下
    2015-07-07
  • Django 自動(dòng)生成api接口文檔教程

    Django 自動(dòng)生成api接口文檔教程

    今天小編就為大家分享一篇Django 自動(dòng)生成api接口文檔教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11

最新評(píng)論

宣城市| 曲阳县| 蓝田县| 利辛县| 祁阳县| 郯城县| 乌海市| 台南市| 宜州市| 芦溪县| 察哈| 屏东市| 盐亭县| 商河县| 永安市| 图木舒克市| 白河县| 裕民县| 亳州市| 镇雄县| 齐河县| 潞西市| 五莲县| 祥云县| 阿城市| 漯河市| 汉中市| 长兴县| 旬邑县| 安平县| 宜昌市| 永登县| 财经| 常熟市| 尉氏县| 姚安县| 新竹市| 阳泉市| 浦北县| 贵州省| 镇康县|