【Python】快捷找到最大最小 N 个元素

Python 中有 heapq 模块可以快捷找到数组中最大最小的 N 个元素;

heapq.nlargest(num, arr)		# 从arr数组中取出最大num个元素
heapq.nsmallest(num, arr)		# 从arr数组中取出最小num个元素

简单数据结构取出最大最小N个元素

e . g . 1 e.g.1 e.g.1 分别取出一维数组中最大和最小的3个元素;

import heapq

nums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]
print(heapq.nlargest(3, nums))
print(heapq.nsmallest(3, nums))

在这里插入图片描述


复杂数据结构中取出最大最小N个元素

e . g . 2 e.g.2 e.g.2 复杂的数据结构,依据 price 字段分别取出字典数组中最大最小的3个字典;

import heapq

portfolio = [
    {'name': 'IBM', 'shares': 100, 'price': 91.1},
    {'name': 'AAPL', 'shares': 50, 'price': 543.22},
    {'name': 'FB', 'shares': 200, 'price': 21.09},
    {'name': 'HPQ', 'shares': 35, 'price': 31.75},
    {'name': 'YHOO', 'shares': 45, 'price': 16.35},
    {'name': 'ACME', 'shares': 75, 'price': 115.65}
]
print(heapq.nlargest(3, portfolio, key=lambda s: s['price']))
print(heapq.nsmallest(3, portfolio, key=lambda s: s['price']))

在这里插入图片描述


代码解析:lambda

在 Python 中,lambda 是一个关键字,用于创建匿名函数。所谓的匿名函数是指没有名字的函数,它们通常用于简短的、一次性的任务。lambda 函数的语法非常简洁:

lambda arguments: expression

lambda 函数接受一个或多个参数( arguments ),并且返回一个表达式的值( expression )。这里的表达式通常只包含一个操作数,并且返回该操作数的值。

在上述代码中:

print(heapq.nlargest(3, portfolio, key=lambda s: s['price']))

这行代码的意思是:

  1. 使用 heapq 模块的 nlargest 函数。
  2. portfolio 列表中找出最大的三个元素。
  3. 使用 lambda s: s['price'] 作为排序的键值(即根据每个字典元素中 'price' 键的值进行排序)。

因此,这个 lambda 函数在这里的作用是指定排序的依据,即每个字典元素中的 'price' 值。

最近更新

  1. TCP协议是安全的吗?

    2024-03-14 20:12:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-14 20:12:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-14 20:12:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-14 20:12:02       20 阅读

热门阅读

  1. 快速在Linux系统安装MySQL

    2024-03-14 20:12:02       21 阅读
  2. Android API 30及更高版本网络权限设置

    2024-03-14 20:12:02       19 阅读
  3. linux Shell 命令行-08-file include 文件包含

    2024-03-14 20:12:02       21 阅读
  4. PYTHON 120道题目详解(106-108)

    2024-03-14 20:12:02       20 阅读
  5. oracle创建表空间语句

    2024-03-14 20:12:02       19 阅读
  6. 触发器

    2024-03-14 20:12:02       19 阅读
  7. WPF中使用LiveCharts绘制散点图

    2024-03-14 20:12:02       19 阅读
  8. SQLite语句

    2024-03-14 20:12:02       22 阅读
  9. mysql订单表设计

    2024-03-14 20:12:02       18 阅读
  10. vector与list的区别与应用?

    2024-03-14 20:12:02       26 阅读