【编程】Python 列表排序

Python 的列表是一个可以更改和排序的集合。它以一定的顺序存储元素对象。列表是组合数据类型,可以存储不同类型的元素,例如,可以在一个列表里面同时有整数、小数和字符串等等。并且,列表类型实现了序列协议,使得可以对序列进行增加和删除对象的操作。

列表的sort()方法

sort() 方法可以将列表的元素按照升序,降序或用户自定义顺序进行排序操作。当调用 sort() 方法的时候,它会遍历列表元素,如果没有参数,会按照升序排序。如果参数 reverse = true ,列表将获得降序排序。

语法

  list.sort(reverse=True|False, key=myFunc)          
  • reverse – 默认 reverse=False, 当 reverse=True 时,将进行降序排序 (可选项)
  • key – 指定排序的方法 (可选项)

数字列表的排序

字符串列表的排序

字符串列表的降序

如果列表项有大写字母,

Python 会假设大写字母排在小写字母前面,如果想改变排序,使用

key=str.lower

使用 key 参数排序

key 参数在 sort() 方法里面指定一个函数,在做比较之前都会对每个元素调用这个函数。如果想使用自己的排序函数,可以利用key参数来完成。

def keyArgs(args):
return args[1]
numList = [('Five', '5'), ('Two', '2'), ('Four', '4'), ('One', '1'), ('Three','3')]
numList.sort(key=keyArgs)
print(numList)

输出

[(‘One’, ‘1’), (‘Two’, ‘2’), (‘Three’, ‘3’), (‘Four’, ‘4’), (‘Five’, ‘5’)]

使用 key 参数反向排序

def keyArgs(args):
return args[1]
numList = [('Five', '5'), ('Two', '2'), ('Four', '4'), ('One', '1'), ('Three','3')]
numList.sort(key=keyArgs,reverse = True)
print(numList)

输出

[(‘Five’, ‘5’), (‘Four’, ‘4’), (‘Three’, ‘3’), (‘Two’, ‘2’), (‘One’, ‘1’)]

依靠列表元素的长度排序

定义一个函数 “sortLen” 返回列表元素的长度,并且指定给 key 参数。

def sortLen(item):
return len(item)
items = ['aaaaa', 'aa', 'aaaa', 'aaa', 'a']
items.sort(key=sortLen)
print(items)

输出

[‘a’, ‘aa’, ‘aaa’, ‘aaaa’, ‘aaaaa’]

元组列表的排序

元组是 python对象的集合,元素在一对小括号直接,用逗号分隔。元组的元素在创建后不能更改,列表的元素在创建后可以更改。

依靠元组的第一项排序

tList = [(8,12), (5,14), (7,18), (6,13), (10,19), (9,17)] 
tList.sort()
print(tList)

输出

[(5, 14), (6, 13), (7, 18), (8, 12), (9, 17), (10, 19)]

依靠元组的第二项排序

def secondItem(args):
return args[1]
tList = [(8,12), (5,14), (7,18), (6,13), (10,19), (9,17)]
tList.sort(key=secondItem)
print(tList)

输出

[(8, 12), (6, 13), (5, 14), (9, 17), (7, 18), (10, 19)]

对象列表的排序

class Cars:
def __init__(self, Name, Year):
self.Name = Name
self.Year = Year
car1 = Cars('Ford',1903)
car2 = Cars('Toyota',1937)
car3 = Cars('Benz',1926)
car4 = Cars('Porsche',1931)
carList = [car1, car2, car3, car4]
carList.sort(key=lambda x: x.Name)
print([item.Name for item in carList])
carList.sort(key=lambda x: x.Year)
print([item.Year for item in carList])

输出

[‘Benz’, ‘Ford’, ‘Porsche’, ‘Toyota’]
[1903, 1926, 1931, 1937]



【编程】Python 集合
【编程】Python 字典
【编程】Python 元组
【编程】Python 列表 List
【编程】Python with 语句
【游戏】益智数独挑战脑力
【编程】Python 函数
【编程】Python 循环控制
【编程】Python For 循环语句

此条目发表在人工智能, 服务器, 程序开发分类目录,贴了, , , , 标签。将固定链接加入收藏夹。