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

Python3實(shí)現(xiàn)對(duì)列表按元組指定列進(jìn)行排序的方法分析

 更新時(shí)間:2018年12月22日 14:32:13   作者:Xiao布_unknown  
這篇文章主要介紹了Python3實(shí)現(xiàn)對(duì)列表按元組指定列進(jìn)行排序的方法,結(jié)合實(shí)例形式分析了Python3針對(duì)列表排序的常見操作技巧與注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Python3實(shí)現(xiàn)對(duì)列表按元組指定列進(jìn)行排序的方法。分享給大家供大家參考,具體如下:

Python版本: python3.+
運(yùn)行環(huán)境: Mac OS
IDE: pycharm

Python內(nèi)建的排序方法

1 排序方法介紹

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

sorted(iterable,key=None,reverse=False) #返回排好序的新列表,不改變對(duì)象本身,默認(rèn)升序;reverse:-True降序 -False 正序?qū)λ锌傻膶?duì)象均有效
list.sort(key=None,reverse=False) #將list自身進(jìn)行排序,不返回新的list對(duì)象,默認(rèn)升序;reverse:-True降序 -False 正序

2 基本的列表排序

1)list.sort()排序

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

2)sorted()排序

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

3 以tuple作為list的元素

在默認(rèn)情況下sort和sorted函數(shù)接收的參數(shù)是元組時(shí),它將會(huì)先按元組的第一個(gè)元素進(jìn)行排序再按第二個(gè)元素進(jìn)行排序,再按第三個(gè)、第四個(gè)…依次排序。

我們通過一個(gè)簡(jiǎn)單的例子來了解它,以下面這個(gè)list為例:

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

我們通過sorted()對(duì)它進(jìn)行排序

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

會(huì)發(fā)現(xiàn)排序后的結(jié)果中(0, 'B')在(0, 'a')的前面。這是因?yàn)樵诎丛M第一個(gè)元素排好之后,將(0, 'B'), (0, 'a')再按第二個(gè)元素進(jìn)行排序了,而'B'的ASCII編碼比'a'小,所以(0, 'B')就排在(0, 'a')的前面了。

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

這就要用到sort方法和sorted方法里的key參數(shù)了。

我們來看一下具體的實(shí)現(xiàn):

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

其中的lambda x:(x[0],x[1].lower()可以理解為一個(gè)匿名函數(shù);

其功能類似于:

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

如果想要以字母作為第一排序規(guī)則,并且字母大小寫不敏感,該怎么實(shí)現(xiàn)?

這就能要運(yùn)用到之前所講到的

在默認(rèn)情況下sort和sorted函數(shù)接收的參數(shù)是元組時(shí),它將會(huì)先按元組的第一個(gè)元素進(jìn)行排序再按第二個(gè)元素進(jìn)行排序,再按第三個(gè)、第四個(gè)…依次排序。

再配合lambda返回一個(gè)自定義tuple;代碼如下:

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

4 [擴(kuò)展] 以dict作為list的元素

這個(gè)list里的元素是dict形式,每個(gè)dict都存有姓名和升高現(xiàn)在想要以升高進(jìn)行升序排列:

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

PS:這里再為大家推薦一款關(guān)于排序的演示工具供大家參考:

在線動(dòng)畫演示插入/選擇/冒泡/歸并/希爾/快速排序算法過程工具:
http://tools.jb51.net/aideddesign/paixu_ys

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python列表(list)操作技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • python  創(chuàng)建一個(gè)保留重復(fù)值的列表的補(bǔ)碼

    python 創(chuàng)建一個(gè)保留重復(fù)值的列表的補(bǔ)碼

    這篇文章主要介紹了python 創(chuàng)建一個(gè)保留重復(fù)值的列表的補(bǔ)碼的相關(guān)資料,需要的朋友可以參考下
    2018-10-10
  • 最新評(píng)論

    梨树县| 马龙县| 田东县| 松原市| 循化| 务川| 雷波县| 青阳县| 巴彦淖尔市| 托克逊县| 景谷| 新津县| 余干县| 尤溪县| 北票市| 电白县| 黔南| 读书| 托克托县| 水城县| 彭阳县| 四子王旗| 高青县| 清流县| 厦门市| 抚松县| 瓦房店市| 汪清县| 金昌市| 彭山县| 江油市| 博罗县| 台前县| 德惠市| 林州市| 上杭县| 伊吾县| 眉山市| 武乡县| 美姑县| 保定市|