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

Python中利用sorted()函數(shù)排序的簡單教程

 更新時(shí)間:2015年04月27日 11:50:07   作者:廖雪峰  
這篇文章主要介紹了Python中利用sorted()函數(shù)排序的簡單教程,sorted()函數(shù)有返回值,在Python的排序?qū)崿F(xiàn)中發(fā)揮著相當(dāng)重要的作用,需要的朋友可以參考下

排序算法

排序也是在程序中經(jīng)常用到的算法。無論使用冒泡排序還是快速排序,排序的核心是比較兩個(gè)元素的大小。如果是數(shù)字,我們可以直接比較,但如果是字符串或者兩個(gè)dict呢?直接比較數(shù)學(xué)上的大小是沒有意義的,因此,比較的過程必須通過函數(shù)抽象出來。通常規(guī)定,對于兩個(gè)元素x和y,如果認(rèn)為x < y,則返回-1,如果認(rèn)為x == y,則返回0,如果認(rèn)為x > y,則返回1,這樣,排序算法就不用關(guān)心具體的比較過程,而是根據(jù)比較結(jié)果直接排序。

Python內(nèi)置的sorted()函數(shù)就可以對list進(jìn)行排序:

>>> sorted([36, 5, 12, 9, 21])
[5, 9, 12, 21, 36]

此外,sorted()函數(shù)也是一個(gè)高階函數(shù),它還可以接收一個(gè)比較函數(shù)來實(shí)現(xiàn)自定義的排序。比如,如果要倒序排序,我們就可以自定義一個(gè)reversed_cmp函數(shù):

def reversed_cmp(x, y):
  if x > y:
    return -1
  if x < y:
    return 1
  return 0

傳入自定義的比較函數(shù)reversed_cmp,就可以實(shí)現(xiàn)倒序排序:

>>> sorted([36, 5, 12, 9, 21], reversed_cmp)
[36, 21, 12, 9, 5]

我們再看一個(gè)字符串排序的例子:

>>> sorted(['bob', 'about', 'Zoo', 'Credit'])
['Credit', 'Zoo', 'about', 'bob']

默認(rèn)情況下,對字符串排序,是按照ASCII的大小比較的,由于'Z' < 'a',結(jié)果,大寫字母Z會(huì)排在小寫字母a的前面。

現(xiàn)在,我們提出排序應(yīng)該忽略大小寫,按照字母序排序。要實(shí)現(xiàn)這個(gè)算法,不必對現(xiàn)有代碼大加改動(dòng),只要我們能定義出忽略大小寫的比較算法就可以:

def cmp_ignore_case(s1, s2):
  u1 = s1.upper()
  u2 = s2.upper()
  if u1 < u2:
    return -1
  if u1 > u2:
    return 1
  return 0

忽略大小寫來比較兩個(gè)字符串,實(shí)際上就是先把字符串都變成大寫(或者都變成小寫),再比較。

這樣,我們給sorted傳入上述比較函數(shù),即可實(shí)現(xiàn)忽略大小寫的排序:

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)
['about', 'bob', 'Credit', 'Zoo']

從上述例子可以看出,高階函數(shù)的抽象能力是非常強(qiáng)大的,而且,核心代碼可以保持得非常簡潔。

相關(guān)文章

  • Python實(shí)現(xiàn)批量采集商品數(shù)據(jù)的示例詳解

    Python實(shí)現(xiàn)批量采集商品數(shù)據(jù)的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)批量采集商品的數(shù)據(jù),文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • numba提升python運(yùn)行速度的實(shí)例方法

    numba提升python運(yùn)行速度的實(shí)例方法

    在本篇文章里小編給大家整理的是一篇關(guān)于numba提升python運(yùn)行速度的實(shí)例方法,有興趣的朋友們可以參考下。
    2021-01-01
  • django應(yīng)用JWT(JSON?Web?Token)實(shí)戰(zhàn)教程

    django應(yīng)用JWT(JSON?Web?Token)實(shí)戰(zhàn)教程

    在前后端分離的項(xiàng)目中,JWT(JSON?Web?Token)作為一種廣泛使用的身份驗(yàn)證和授權(quán)機(jī)制,提供了一種安全、高效的方式來保護(hù)RESTful?API,本文詳細(xì)介紹了JWT的概念、優(yōu)勢、在Django中的應(yīng)用步驟和使用方法,是構(gòu)建安全、高效Web應(yīng)用的有效指南
    2024-10-10
  • Python+Sympy實(shí)現(xiàn)計(jì)算微積分

    Python+Sympy實(shí)現(xiàn)計(jì)算微積分

    微積分的計(jì)算也許平時(shí)用不到,會(huì)讓人覺得有點(diǎn)高深,它們的計(jì)算過程中需要使用很多計(jì)算規(guī)則,但是使用?Sympy?可以有效減輕這方面的負(fù)擔(dān),本文就來和大家簡單講講吧
    2023-07-07
  • Python獲取單個(gè)程序CPU使用情況趨勢圖

    Python獲取單個(gè)程序CPU使用情況趨勢圖

    這篇文章主要介紹了Python獲取單個(gè)程序CPU使用情況趨勢圖,本文使用matplotlib將數(shù)據(jù)可視化,需要的朋友可以參考下
    2015-03-03
  • PyQt信號和槽機(jī)制的具體使用

    PyQt信號和槽機(jī)制的具體使用

    信號和槽機(jī)制是一種通信機(jī)制,在PyQt中,信號是一種特殊的函數(shù),它可以傳遞任何類型的數(shù)據(jù),而槽則是一種接收信號的函數(shù),本文就介紹了PyQt信號和槽機(jī)制的具體使用,感興趣的可以了解一下
    2023-08-08
  • python發(fā)送json參數(shù)的實(shí)例代碼

    python發(fā)送json參數(shù)的實(shí)例代碼

    在寫腳本的過程中,除了發(fā)送form表單參數(shù)之外,我們還會(huì)發(fā)送json格式的參數(shù)。那么碰見json格式要怎么發(fā)送呢,這篇我們來解決這個(gè)問題,需要的朋友可以參考下
    2019-10-10
  • python通過自定義isnumber函數(shù)判斷字符串是否為數(shù)字的方法

    python通過自定義isnumber函數(shù)判斷字符串是否為數(shù)字的方法

    這篇文章主要介紹了python通過自定義isnumber函數(shù)判斷字符串是否為數(shù)字的方法,涉及Python操作字符串判斷的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • 解決導(dǎo)入django_filters不成功問題No module named ''django_filter''

    解決導(dǎo)入django_filters不成功問題No module named ''django_filter''

    這篇文章主要介紹了解決導(dǎo)入django_filters不成功問題No module named 'django_filter',具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 基于Tensorflow的MNIST手寫數(shù)字識(shí)別分類

    基于Tensorflow的MNIST手寫數(shù)字識(shí)別分類

    這篇文章主要為大家詳細(xì)介紹了基于Tensorflow的MNIST手寫數(shù)字識(shí)別分類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06

最新評論

漠河县| 云和县| 泰和县| 淮北市| 浑源县| 柘城县| 康马县| 永康市| 大庆市| 比如县| 应用必备| 聊城市| 洱源县| 博罗县| 疏附县| 正镶白旗| 界首市| 吉林市| 杭锦后旗| 洛扎县| 乌恰县| 东港市| 穆棱市| 普兰店市| 绵竹市| 定远县| 卓资县| 松江区| 陵川县| 刚察县| 黄骅市| 天气| 屯留县| 杂多县| 通渭县| 潮安县| 龙江县| 清苑县| 孟连| 舟曲县| 临颍县|