sorted()与sort()函数
一 sorted()函数
有三个参数:
第一个是iterable,必选,待排序的集合,可以是list,tuple,set,dict等
第二个是reverse,可选,默认为False按升序排列,True按降序排列
第三个是key,可选,这是一个函数,返回一个key,可以看做是排序的标准,注意这里的key输入的是待排序集合的每一个元素,返回的是按照映射函数排序后的结果,这里的函数可以有多个,即先按fun1排序后,在按fun2排序,并且这里的排序函数可以直接是一个list,则按list从头到尾进行排序,
sorted函数不修改原始列表,而是返回新的列表,而sort()直接修改原数据
# 对list排序 fruits = [\'apple\', \'pear\', \'peach\', \'banana\'] print(sorted(fruits, key=lambda x: len(x))) # [\'pear\', \'apple\', \'peach\', \'banana\'] # 对list内的tuple排序(对list内的dict排序同理) student_tuple = [(\'Bob\',\'boy\',17), (\'Jack\',\'girl\',19), (\'Tom\',\'boy\',12)] print(sorted(student_tuple, key=lambda student: student[2])) # [(\'Tom\', \'boy\', 12), (\'Bob\', \'boy\', 17), (\'Jack\', \'girl\', 19)] # 对字典的值排序 student_dict = {\'Bob\':{\'sex\':\'boy\', \'age\':17}, \'Jack\':{\'sex\':\'girl\',\'age\':19}, \'Tom\':{\'sex\':\'boy\',\'age\':12}} # 直接排序只能对字典的key进行排序 print(sorted(student_dict)) # [\'Bob\', \'Jack\', \'Tom\'] # 将字典中的每个key-values对转化成一个tuple,便于排序,因为字典是无序的,无法直接对字典排序 student_dict_items = student_dict.items() print(sorted(student_dict_items, key=lambda x: x[1][\'age\'])) # [(\'Tom\', {\'sex\': \'boy\', \'age\': 12}), (\'Bob\', {\'sex\': \'boy\', \'age\': 17}), (\'Jack\', {\'sex\': \'girl\', \'age\': 19})]
1 sorted可以对series,ndarry,list类型进行排序
默认会从小到大进行排序
arr1 = np.array([1,2,3,4,44,3243,43,8678]) print(sorted(arr1)) print(type(sorted(arr1)))
对ndarry排序时,返回的是一个list。输出:
[1, 2, 3, 4, 43, 44, 3243, 8678] <class \'list\'>
2 sort()可以对list中元素进行排序
注意list中含有nan时,不是真正的排序,sorted和sort效果基本一致,只不过后者可直接在原数据上修改.
a = [3,4,2,2,4,np.nan,5,3,5,6] print(a) print(sorted(a)) a.sort(reverse= False) print(a) #[3, 4, 2, 2, 4, nan, 5, 3, 5, 6] #[2, 2, 3, 3, 4, 4, nan, 5, 5, 6] #[2, 2, 3, 3, 4, 4, nan, 5, 5, 6]