python中 关于 sort() 和sorted() 用法详解
1. sort:
sort是Python中列表的方法
sort() 语法格式:
list.sort(key=None, reverse=False)
sort可以对列表元素进行排序,该方法没有返回值,也就是返回值为 None,直接改变原列表中元素的顺序,是对列表的就地排序。
- key:是指用来比较的关键字,可以说是列表元素的一个权值。key一般用来接受一个函数(或者匿名函数),这个函数只接受一个元素,并返回其权值。
- reverse:是否逆序排列(reverse默认为False,sort函数默认按照字母顺序排序。如果令reverse=True,那么就会按照与字母顺序相反的顺序排序)
例子演示:
1、按照列表元素最后一个字母进行倒序排序
isalpha = ['BAaWea','ABivc','CEpd','dDDizb','FHhone','EKe']
isalpha.sort(key=lambda x:x[-1], reverse=True)
print(isalpha)
结果:
['FHhone', 'EKe', 'CEpd', 'ABivc', 'dDDizb', 'BAaWea']
2、按照列表元素第二个字母进行顺序排序
isalpha = ['BAaWea','ABivc','CEpd','dDDizb','FHhone','EKe']
def fun1(x):
return x[1]
isalpha.sort(key=fun1)
print(isalpha)
结果:
['BAaWea', 'ABivc', 'dDDizb', 'CEpd', 'FHhone', 'EKe']
3、数字的倒序,和顺序排序
num = [1,5,3,2,8,4,0]
num.sort()
print(num)
num.sort(reverse=True)
print(num)
结果:
[0, 1, 2, 3, 4, 5, 8]
[8, 5, 4, 3, 2, 1, 0]
2. sorted:
sorted() 函数是Python中的内置函数
sorted 可以对所有可迭代的对象进行排序操作,尤其是可以对字典进行排序。sorted() 函数将重新排序 iterable 参数中的元素,并将结果返回一个新的列表(对原列表的顺序不会产生影响)。
语法格式为:sorted(iterable, key=None, reverse=False)。
- iterable:指定一个待排序的可迭代对象。
- key:指定一个只有单个参数的函数,用于从 iterable
参数的每个元素中提取用于比较的有效关键值(比如可以用 key = str.lower 来实现忽略大小写的排序;或者用 key = len
进行基于字符串长度的排序) - reverse:该参数是一个布尔类型值,如果设置为 True,则将结果反向排序,默认值是 False。
例子演示:
1、对列表进行排序
num = [1,5,3,2,8,4,0]
print(sorted(num))
结果:
[0, 1, 2, 3, 4, 5, 8]
2、对元祖进行排序
num2 = (3,2,7,4,0,1,1)
print(sorted(num2))
结果:
[0, 1, 1, 2, 3, 4, 7]
3、对字典进行排序
对于字典而言,默认对keys进行排序
num3 = {"Houmin":18, "Chen":22, "Wang":12}
print(sorted(num3)) # 对于字典而言,默认对keys进行排序
print(sorted(num3.items())) # 根据items进行排序,以列表形式返回键值对
print(sorted(num3.values())) # 对字典中的值进行排序,返回列表形式
结果:
['Chen', 'Houmin', 'Wang']
[('Chen', 22), ('Houmin', 18), ('Wang', 12)]
[12, 18, 22]
根据年龄从大到小进行排序
num3 = {"Houmin":18, "Chen":22, "Wang":12}
print(sorted(num3.items(),key=lambda x:x[1]))
print(sorted(num3.items(), key=lambda x:x[-1]))
结果:
[('Wang', 12), ('Houmin', 18), ('Chen', 22)]
[('Wang', 12), ('Houmin', 18), ('Chen', 22)]
根据年龄从大到小进行排序
print(sorted(num3.items(), key=lambda x:x[1], reverse=True))
结果:
[('Chen', 22), ('Houmin', 18), ('Wang', 12)]