一、sorted()
sorted 语法:
sorted(iterable, key=None, reverse=False)
1.iterable:需要排序的对象
2.key:主要是用来进行比较的元素,只有一个参数
3.reverse:reverse = True 降序 , reverse = False 升序(默认)
key=lambda 元素: 元素[字段索引]
例如:想对元素第二个字段排序,则
key=lambda y: y[1] 备注:这里y可以是任意字母,等同key=lambda x: x[1]
lambda解释
# 普通python函数
def func(a,b,c):
return a+b+c
# lambda匿名函数
f = lambda a,b,c: a+b+c
1.在代码:f = lambda a,b,c: a+b+c 中,lambda表示匿名函数,
2.冒号 “:”之前的a,b,c表示它们是这个函数的参数。
3.匿名函数不需要return来返回值,表达式本身结果就是返回值
# 带有一个参数
lambda x: x**3
# 带有多个参数
lambda x, y, z: x+y+z
# 存在默认值的参数
lambda x, y=3: x*y
lambda函数的用法
f = lambda x, y, z=4: x*y*z
f(2,3)
24
sorted()用法
obj2 = sorted(obj1)
#正确使用
a=[8,4,1,2,3,6,9]
b=sorted(a)
b
<<<[1, 2, 3, 4, 6, 8, 9]
#错误
a=[8,4,1,2,3,6,9]
a.sorted()
<<<AttributeError: 'list' object has no attribute 'sorted'
sorted(a, key=lambda x: x[1]) a为待排序的对象;
key=lambda x: x[1] 为对前面的对象中的第二维数据(即value)的值进行排序。
key=lambda 变量:变量[维数] 。维数可以按照自己的需要进行设置。
a=[8,4,1,2,3,6,9]
sorted(a, key=lambda x: x*-1)
>>>[9, 8, 6, 4, 3, 2, 1]
a=['8','4','1','2','3','6','9']
sorted(a, key=lambda x: x[0])
>>>['1', '2', '3', '4', '6', '8', '9']
a=['8','4','1','2','3','6','9']
sorted(a, key=lambda x: x[0],reverse=True)
>>>['9', '8', '6', '4', '3', '2', '1']
二、sort()用法
sort()方法语法:
list.sort( key=None, reverse=False)
key – 主要是用来进行比较的元素,只有一个参数.
reverse – 排序规则,reverse = True 降序,reverse = False 升序(默认)
#默认降序
# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
# 指定第一个元素排序
random.sort(key=lambda x:x[0])
# 输出类别
print ('排序列表:', random)
>>>排序列表: [(1, 3), (2, 2), (3, 4), (4, 1)]
#第二种排序
# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
# 指定第二个元素排序
random.sort(key=lambda x:x[1])
# 输出类别
print ('排序列表:', random)
>>>排序列表: [(4, 1), (2, 2), (1, 3), (3, 4)]
三、argsort()用法
argsort()函数是将x中的元素从小到大排列,提取其对应的index(索引)
import numpy as np
x=np.array([1,4,3,-1,6,9])
x.argsort()
<<<array([3, 0, 2, 1, 4, 5], dtype=int64)
argsort()函数是将x中的元素从小到大排列,提取其对应的index(索引),然后输出到y。例如:x[3]=-1最小,所以y[0]=3,x[5]=9最大,所以y[5]=5。
np.argsort()[num]:
当num>=0时,np.argsort()[num]就可以理解为y[num];
当num<0时,np.argsort()[num]就是把数组y的元素反向输出