国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-02-16 00:16:12
字體:
來源:轉載
供稿:網友

本文實例講述了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())

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 顺义区| 五原县| 吐鲁番市| 青阳县| 务川| 米易县| 凤冈县| 西平县| 平顶山市| 潜山县| 陈巴尔虎旗| 伽师县| 习水县| 扶风县| 荔浦县| 兴隆县| 绥中县| 武义县| 辽源市| 富民县| 宜章县| 东至县| 彝良县| 沧源| 舞阳县| 临城县| 仙居县| 资阳市| 兴宁市| 额敏县| 丹东市| 高碑店市| 宾阳县| 石景山区| 衡南县| 新龙县| 阜南县| 翁源县| 奎屯市| 太仆寺旗| 库车县|