Python3 中 sorted() 、sort()、argsort() 函数

一、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的元素反向输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值