sort()与sorted函数:
sort() 函数是针对列表定义的函数,用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。该方法没有返回值,但是会对列表的对象进行排序,执行完后会改变原来的list,如果你不需要原来的list,这种效率稍微高点
list.sort(cmp=None, key=None, reverse=False)
- cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
- key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
>>> list = [2,8,4,6,9,1,3]
>>> list.sort()
>>> list
[1, 2, 3, 4, 6, 8, 9]
sorted()的差别之处在于:
- sorted()不会改变原来的list,而是会返回一个新的已经排序好的list
- list.sort()方法仅仅被list所定义,sorted()可用于任何一个可迭代对象
sorted(iterable, cmp=None, key=None, reverse=False)
- iterable -- 可迭代对象。
- cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
- key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
>>>a = [5,7,6,3,4,1,2]
>>> b = sorted(a) # 保留原列表
>>> a
[5, 7, 6, 3, 4, 1, 2]
>>> b
[1, 2, 3, 4, 5, 6, 7]
>>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
>>> sorted(students, key=lambda s: s[2]) # 按年龄排序
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
from :https://www.runoob.com/python/python-func-sorted.html
2、min/max内建函数
初级:
#可迭代对象
a = [1, 2, 3, 4, 5, 6]
tmp = max(a)
print(tmp)
>>>tmp=6
中级:key属性的使用
当key参数不为空时,就以key的函数对象为判断的标准。如果我们想找出一组数中绝对值最大的数,就可以配合lamda先进行处理,再找出最大值.
a = [-9, -8, 1, 3, -4, 6]
tmp = max(a, key=lambda x: abs(x))
print(tmp)
>>>tmp=-9
高级技巧:找出字典中值最大的那组数据
在对字典进行数据操作的时候,默认只会处理key,而不是value.先使用zip把字典的keys和values翻转过来,再用max取出值最大的那组数据
prices = {
'A':123,
'B':450.1,
'C':12,
'E':444,
}
max_prices = max(zip(prices.values(), prices.keys()))
print(max_prices) # (450.1, 'B')
当字典中的value相同的时候,才会比较key:
prices = {'A': 123, 'B': 123,}
max_prices = max(zip(prices.values(), prices.keys()))
print(max_prices) # (123, 'B')
min_prices = min(zip(prices.values(), prices.keys()))
print(min_prices) # (123, 'A')
还有一种简便方法:
先计算dict.det()返回value,比较value的最大值,返回最大值对应的key。
dict={.....}
key=max(dict,key=dict.get())
from:https://www.cnblogs.com/whatisfantasy/p/6273913.html
注意区分np.max()函数,没有key参数。