Python中求前N个最大数与最小数

问题1:我想找到一个列表中最大的三个元素
nums=[1,5,8,-1,67,54,1111,89,-9,20,67,34,80]
方法:
>>> import heapq
>>>print(heapq.nlargest(3,nums))
[1111, 89, 80]
最小的三个元素:
>>>print(heapq.nsmallest(3,nums))
[-9, -1, 1]
问题2:如果元素不是一个整数列表,而是一个字典组成的列表呢?
>>>files=[
{'name':'apple','price':100},
{'name':'thinkpad','price':500},
{'name':'samsung','price':200},
{'name':'ibm','price':700},
{'name':'huawei','price':1000}
]
>>> cheap=heapq.nsmallest(3,files,key=lambda s:s['price'])
>>>cheap
[{'name': 'apple', 'price':
100
}, {'name': 'samsung', 'price':
200
}, {'name': 'thinkpad', 'price':
500
}]
>>> expensive=heapq.nlargest(2,files,key=lambda s:s['price'])
>>>expensive
[{'name': 'huawei', 'price':
1000
}, {'name': 'ibm', 'price':
700
lambda表达式介绍:
对于简单的函数,存在一种简便的表示方式,即:lambda表达式
#
###################### 普通函数 ######################
# 定义函数(普通方式)
def func(arg):
return arg + 1
# 执行函数
result = func(123)
# ###################### lambda ######################
# 定义函数(lambda表达式)
my_lambda = lambda arg : arg + 1
result = my_lambda(123)
和内置的max,min函数比较
>>> a = [-9, -8, 1, 3, -4, 6]
>>>max(a)
6
这个默认用法,如果想找出绝对值最大的那个元素,该如何做呢?
>>> max(a,key=lambda x:abs(x))
-9
字典组成的列表:
>>> max(files,key=lambda x:x['price'])
{'price': 1000, 'name': 'huawei'}
>>>
希望对你有帮助,欢迎大家转发。