1 列表排序 ------list.sort()
1.1 格式:
list.sort( key=None, reverse=False ) # 默认升序
1.2 参数
key -- 主要用来比较元素,只有一个参数,具体参数源自于可迭代对象中,指定可迭代对象中的一个元素来进行排序;
reverse------排序规则, reverse=True降序; reverse=False升序
1.3 无返回值,对列表中的对象进行排序
1.4 实例:
例1 默认 升序
aList = ['Google', 'Runoob', 'Taobao', 'Facebook']
aList.sort()
print ( " List : ", aList ) # ['Facebook', 'Google', 'Runoob', 'Taobao']
例2 倒序输出 参数reverse=True
aList = ['Google', 'Runoob', 'Taobao', 'Facebook']
aList.sort(reverse=True)
print("降序输出: ", aList) # ['Taobao', 'Runoob', 'Google', 'Facebook']
例3 对一个元素多个属性 指定某一个属性进行排序 用参数key=lamdba x:x[1]
randomx = [(2, 2), (3, 4), (4, 1), (1, 3)]
randomx.sort(key=lambda x:x[1]) # 指定第二个元素排序
print("排序输出: ", randomx) # 排序列表: [(4, 1), (2, 2), (1, 3), (3, 4)]
2 python3 sorted()函数
2.1 sorted( iterable, key=None, reverse=False ) 排序函数
2.2 参数:
iterable 待排序对象
key 函数,函数只能有一个参数
reverse 排序的方式 True倒序,默认False升序
重点在key: key指定一个接收一个参数的函数,这个函数用于从每个元素中提取一个用于比较的关键字。默认值为None 。
2.3 栗子
3.1 基础序列排序
result = (98, 85, 88, 45, 21, 68)
print("升序: ", list(sorted(result)))
print("降序: ", list(sorted(result, reverse=True)))
# 不同类型数据比较,需要将数据转换
name = ['Alan', 5, 4, 'Bode', 9, 'woodman']
print(list(sorted(name, key=lambda x: str(x)))) # 升序
print(list(sorted(name, key=lambda x: str(x), reverse=True)))
3.2 多多个参数结果进行排序----key
students_result = [('woodman', 'A', 98), ('Kiln', 'D', 40), ('Bode', 'B', 75), ('dave', 'C', 61)]
# 按照姓名排序
name = sorted(students_result, key=lambda s: s[0])
print('name排序:',list(name))
# 按照级别排序
level = sorted(students_result, key=lambda s: s[1])
print('level排序:',list(level))
# 按照成绩排序
result = sorted(students_result, key=lambda s: s[1])
print('result排序:',list(result))
3.3 字符串排序, 排序规则: 小写 < 大写 < 奇数 < 偶数
s = 'woodman1880ALan1623'
# 函数,判断字符是否为数字,是否为偶数,是否大写,原字符串
fun = lambda x: (x.isdigit(), x.isdigit() and int(x) % 2 == 0, x.isupper(), x)
s1 = sorted(s, key=fun,reverse=False) # aadmnnoowAL11302688
print("".join(s1))
3.4 sorted()对字典数据排序
d={'woodman':86,'Bode':78,'Alan':95}
print('按照key升序:',sorted(d))
print("按照val升序:", sorted(d.items(), key=lambda x:x[1]))
reference: