工作开始用 Python 了,从零学起,现在记忆力不行了,列表排序功能都记不住,老忘,这里把最近用到的整理了一下。
# Python 列表有内置的 list.sort() 函数, list.sort() 函数修改列表本身
list1 = [6,9,10,-1,88,36]
list1.sort() #升序
print(list1)
list1.sort(reverse=True) #降序
print(list1)
#列表子元素是列表的情况
list2 = [[6],[9],[10],[-1],[88],[36]]
list2.sort(key = lambda row : (row[0])) #升序
# list2.sort(key = lambda row : row[0]) #效果同上
print(list2)
list2.sort(key = lambda row : row[0], reverse=True) #降序
print(list2)
#按照子元素中的多个元素排序
list3 = [[6,9],[9,17],[10,-1],[-1,88],[4,88],[36,100]]
#先按照子列表第一个元素升序排序,如果相同,则按照第二个元素升序排序
list3.sort(key = lambda row : (row[1], row[0]))
print(list3)
#先按照子列表第一个元素降序排序,如果相同,再按照第二个元素降序排序
list3.sort(key = lambda row : (row[1], row[0]), reverse=True)
print(list3)
#使用 lambda 函数设置新的排序逻辑
#按照转换成小写顺序后的字母顺序排序
liststr = ['n','m','c','d','y','x','A','J','A','I']
liststr.sort(key=str.lower)
# liststr.sort(key=lambda e:str.lower(e)) 效果同上
print(liststr)
#按照子元素长度倒序排列
liststrlen = ['n1','mmm','c','dwwod','year','xyz','Ab','JJ','AA','I']
liststrlen.sort(key=lambda e:len(e), reverse=True)
print(liststrlen)
#当然实际情况中还有更复杂的需求,以上的方法是无法满足的,限于文章长度,这里不做赘述
# Python 还有一个内置函数 sorted(), 它返回一个新的排好序的列表,原数据不变
orilist = [6,9,10,-1,88,36]
sortedlist1 = sorted(orilist)
print(sortedlist1)
sortedlist2 = sorted(orilist, reverse=True)
print(sortedlist2)
print(orilist)
#原数据不限于列表,也可以是元组等可遍历数据
orilist2 = (6,9,10,-1,88,36)
sortedlist2 = sorted(orilist2)
print(orilist2)
print(sortedlist2)
复制
程序结果如下:
[-1, 6, 9, 10, 36, 88]
[88, 36, 10, 9, 6, -1]
[[-1], [6], [9], [10], [36], [88]]
[[88], [36], [10], [9], [6], [-1]]
[[10, -1], [6, 9], [9, 17], [-1, 88], [4, 88], [36, 100]]
[[36, 100], [4, 88], [-1, 88], [9, 17], [6, 9], [10, -1]]
['A', 'A', 'c', 'd', 'I', 'J', 'm', 'n', 'x', 'y']
['dwwod', 'year', 'mmm', 'xyz', 'n1', 'Ab', 'JJ', 'AA', 'c', 'I']
[-1, 6, 9, 10, 36, 88]
[88, 36, 10, 9, 6, -1]
[6, 9, 10, -1, 88, 36]
(6, 9, 10, -1, 88, 36)
复制
运行环境:Windows 10 + VS Code + Python 3.9.6
文章转载自林员外聊编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。