Python修炼第一天
1、怎样从一个里获得最大或者最小的N个元素?
方法一:使用Python内置模heapq
import heapq # 内置模块(堆)
nums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]
print(heapq.nlargest(3, nums)) # 输出3个最大的值 [42, 37, 23]
print(heapq.nsmallest(3, nums)) # 输出3个最小的值 [-4, 1, 2]
方法二:可以先排序在通过切片取值
nums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]
print(sorted(nums)[-1:]) # 输出3个最大的值 [23, 37, 42]
print(sorted(nums)[:1]) # 输出3个最小的值 [-4, 1, 2]
方法三:可将列表进行堆排序后再进行取值
import heapq
nums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]
heap = list(nums)
heapq.heapify(heap) # 进行堆序列排序
print(heap) # [-4, 2, 1, 23, 7, 2, 18, 23, 42, 37, 8]
print(heapq.heappop(heap)) # 输出最小的元素-4
print(heapq.heappop(heap)) # 输出最小的元素1
print(heapq.heappop(heap)) # 输出最小的元素2
堆数据结构最重要的特征是 heap[0] 永远是最小的元素。并且剩余的元素可以很
容易的通过调用 heapq.heappop() 方法得到,该方法会先将第一个元素弹出来,然后
用下一个最小的元素来取代被弹出元素
方法四:如果只取最大值和最小值可以使用max,min
nums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]
print(max(nums)) # 输出最大值42
print(min(nums)) # 输出最小值-4