91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python3實現對列表按元組指定列進行排序的方法分析

發布時間:2020-09-30 19:10:27 來源:腳本之家 閱讀:405 作者:Xiao布_unknown 欄目:開發技術

本文實例講述了Python3實現對列表按元組指定列進行排序的方法。分享給大家供大家參考,具體如下:

Python版本: python3.+
運行環境: Mac OS
IDE: pycharm

Python內建的排序方法

1 排序方法介紹

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

sorted(iterable,key=None,reverse=False) #返回排好序的新列表,不改變對象本身,默認升序;reverse:-True降序 -False 正序對所有可迭代的對象均有效
list.sort(key=None,reverse=False) #將list自身進行排序,不返回新的list對象,默認升序;reverse:-True降序 -False 正序

2 基本的列表排序

1)list.sort()排序

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

2)sorted()排序

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

3 以tuple作為list的元素

在默認情況下sort和sorted函數接收的參數是元組時,它將會先按元組的第一個元素進行排序再按第二個元素進行排序,再按第三個、第四個…依次排序。

我們通過一個簡單的例子來了解它,以下面這個list為例:

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

我們通過sorted()對它進行排序

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

會發現排序后的結果中(0, 'B')在(0, 'a')的前面。這是因為在按元組第一個元素排好之后,將(0, 'B'), (0, 'a')再按第二個元素進行排序了,而'B'的ASCII編碼比'a'小,所以(0, 'B')就排在(0, 'a')的前面了。

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

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

我們來看一下具體的實現:

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

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

其功能類似于:

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

如果想要以字母作為第一排序規則,并且字母大小寫不敏感,該怎么實現?

這就能要運用到之前所講到的

在默認情況下sort和sorted函數接收的參數是元組時,它將會先按元組的第一個元素進行排序再按第二個元素進行排序,再按第三個、第四個…依次排序。

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

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

4 [擴展] 以dict作為list的元素

這個list里的元素是dict形式,每個dict都存有姓名和升高現在想要以升高進行升序排列:

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

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

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

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python列表(list)操作技巧總結》、《Python編碼操作技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》

希望本文所述對大家Python程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西昌市| 瑞安市| 交口县| 静乐县| 兖州市| 淮北市| 凤翔县| 盖州市| 华蓥市| 武乡县| 荥经县| 开鲁县| 施秉县| 福泉市| 湟中县| 肥西县| 永定县| 龙海市| 紫金县| 罗城| 阳朔县| 札达县| 晋州市| 翁牛特旗| 浦江县| 广平县| 新河县| 色达县| 襄樊市| 鹿泉市| 南溪县| 嘉荫县| 洪雅县| 乌海市| 阳新县| 新竹市| 平邑县| 息烽县| 满城县| 定远县| 吉首市|