如何有效地比较两个无序列表(而不是集合)?

2023-12-24

a = [1, 2, 3, 1, 2, 3]
b = [3, 2, 1, 3, 2, 1]

a 和 b 应该被认为是相等的,因为它们具有完全相同的元素,只是顺序不同。

问题是,我的实际列表将由对象(我的类实例)组成,而不是整数。


O(n): The 柜台() https://docs.python.org/3.5/library/collections.html#collections.Counter方法是最好的(如果你的对象是可散列的):

def compare(s, t):
    return Counter(s) == Counter(t)

O(n log n): The sorted() https://docs.python.org/3.5/library/functions.html#sorted方法是次佳的(如果您的对象是可订购的):

def compare(s, t):
    return sorted(s) == sorted(t)

O(n * n):如果对象既不可散列,也不可排序,则可以使用相等性:

def compare(s, t):
    t = list(t)   # make a mutable copy
    try:
        for elem in s:
            t.remove(elem)
    except ValueError:
        return False
    return not t
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何有效地比较两个无序列表(而不是集合)? 的相关文章

  • 我无法使用 Python 和 Facebook Marketing API 获取所有 Facebook 营销活动的统计信息

    我正在尝试检索以下指标 date campaign name impressions clicks spend 在我的 Facebook 帐户中的所有活动中 但显然我编写的脚本仅返回某些活动的统计数据 而不是全部 它仅返回大多数营销活动的营
  • 使用解析将 ** 运算符更改为幂函数?

    我的要求是将 运算符更改为幂函数 例如 1 Input B 2 Output power B 2 2 B 2 T 2 X Output power B 2 我写了下面的正则表达式来解决这个问题 rx r a zA Z0 9 a zA Z0
  • Python 3.4.3 subprocess.Popen 在没有管道的情况下获取命令的输出?

    我试图将命令的输出分配给变量 而不让命令认为它正在通过管道传输 原因是 如果正在通过管道传输 则相关命令会给出未格式化的文本作为输出 但如果从终端运行 则会给出颜色格式化的文本 我需要获取这种颜色格式的文本 到目前为止我已经尝试了一些事情
  • python 类的属性不在 __init__ 中

    我想知道为什么下面的代码有效 usr bin env python3 import sys class Car def init self pass if name main c Car c speed 3 c time 5 print c
  • 使用 pygtk3 将 GUI 窗口添加到 python opencv2 程序

    我已经使用Python和Opencv2完成了一个程序 现在 我想向我的程序添加一个 GUI 窗口 我对 PyGtk3 有一些经验 因此 我修改了代码以采用 PyGtk3 但是 我遇到了错误 因此 我尝试了一个简单的程序来找出实际的错误 我的
  • 不使用 graphviz/web 可视化决策树

    由于某些限制 我无法使用 graphviz webgraphviz com 可视化决策树 工作网络与另一个世界是封闭的 问题 是否有一些替代实用程序或一些 Python 代码用于至少非常简单的可视化可能只是决策树的 ASCII 可视化 py
  • 使用 Twisted Python 的 UDP 客户端和服务器

    我想创建一个服务器和客户端 使用 Twisted 从网络发送和接收 UDP 数据包 我已经用 Python 中的套接字编写了此代码 但想利用 Twisted 的回调和线程功能 然而 我需要 Twisted 设计方面的帮助 我想接收多种类型的
  • 如何使用lxml和python更新xml文件?

  • 如何使用子进程打开新的浏览器选项卡?

    我正在打开一个新的 IE 窗口 subprocess Popen r os environ PROGRAMFILES Internet Explorer IEXPLORE EXE Call URL 当 IE 关闭时这很好 但即使打开它也会生
  • 如何对嵌套函数进行单元测试? [复制]

    这个问题在这里已经有答案了 您将如何对嵌套函数进行单元测试f1 在下面的例子中 def f def f1 return 1 return 2 或者需要测试的函数不应该嵌套吗 有一个类似的问题这个链接 https stackoverflow
  • 替换 pandas 数据框中的点

    我有一个如图所示的数据框 数字实际上是对象 正在做df treasury rate pd to numeric df treasury rate 可预见的炸弹 然而 做df replace np nan 似乎没有摆脱这个点 所以我很困惑 有
  • 计算二维笛卡尔坐标中不规则形状的边界

    我正在寻找一种计算不规则形状边界的解决方案 Lats take a look at Square example 如果我有Minimum x and y and Maximum x and y like MaxX 5 MinX 1 MaxY
  • 如何在 Python 中包含 PHP 脚本?

    我有一个 PHP 脚本 news generator php 当我包含它时 它会抓取一堆新闻项并打印它们 现在 我在我的网站 CGI 中使用 Python 当我使用 PHP 时 我在 新闻 页面上使用了这样的内容 为了简单起见 我删掉了这个
  • 如何使用JQuery和Django(ajax + HttpResponse)?

    假设我有一个 AJAX 函数 function callpage ajax method get url abc data x 3 beforeSend function success function html IF HTTPRESPO
  • 在 Django 中翻译文件时的 Git 命令

    我在 Django 中有一个现有的应用程序 我想在页面上添加翻译 在页面上我有 trans Projects 在 po 文件中我添加了 templates staff site html 200 msgid Projects msgid P
  • 检测计算机何时解锁 Windows

    我用过这个优秀的方法 https stackoverflow com questions 20733441 lock windows workstation using python 20733443锁定 Windows 计算机 那部分工作
  • 在 Mac (Catalina) 上安装 PyGame 时出错 [重复]

    这个问题在这里已经有答案了 我一直在尝试将 PyGame 安装到 Catalina 上的 Mac 上 但不知道如何安装 我收到的错误消息是 SystemExit error command gcc failed with exit stat
  • 磁盘寻道时间测量方法

    我编写了一个脚本来测量 HDD 上的寻道时间 并且其完成方式的微小变化会导致显着不同的时间 第一个周期在磁盘开头的区域内进行跳转 第二个周期选择磁盘上执行查找的随机区域 相同大小 这种方法显然不同 但我不明白为什么它会改变结果 请注意 对于
  • Scrapy - 持续从数据库中获取要爬取的url

    我想不断地从数据库中获取要爬行的网址 到目前为止 我成功地从基地获取了 url 但我希望我的蜘蛛继续从该基地读取 因为该表将由另一个线程填充 我有一个管道 一旦爬行 工作 就会从表中删除 url 换句话说 我想使用我的数据库作为队列 我尝试
  • Pymongo 批量插入

    我正在尝试批量插入文档 但批量插入时不会插入超过 84 个文档 给我这个错误 in insert pymongo errors InvalidOperation cannot do an empty bulk insert 是否可以批量插入

随机推荐

  • java有“Linked ConcurrentHashMap”数据结构吗?

    我需要一个 LinkedHashMap 并且线程安全的数据结构 我怎样才能做到这一点 您可以将映射包装在 Collections synchronizedMap 中以获取维护插入顺序的同步哈希映射 这不像 ConcurrentHashMap
  • 使用正则表达式过滤对象数组

    我有一个这样的数据数组 const data Date 2018010101 color blue Date 2018010102 color blue Date 2018010103 color red Date 2018010104 c
  • Angular - 类型“string”不可分配给类型“boolean”

    角度 4 3 1角度 CLI 1 2 3打字稿 2 3 4 组件打字稿文件 public saveName string public overwrite boolean 以下标记失败并显示类型 string 不可分配给类型 boolean
  • 向 JNA 类 Java (Kernel32) 添加另一个方法

    我试图使用 WIN32 dll 中的方法 未包含在 JNA 中 方法是获取产品信息 我在单独的项目和工作中尝试这个 public interface Kernel32 extends Library public boolean GetPr
  • SQL Server DACPAC 部署删除用户/角色/权限

    我正在使用 DACPAC 部署 Azure SQL Server 数据库 每次我部署时 它都会删除我的用户 角色和权限 即使我在我正在使用的发布配置文件中明确告诉它不要这样做 发布配置文件定义为
  • Amazon S3 WebDAV 访问

    我想在不使用第三方软件的情况下访问我的 Amazon S3 存储桶 而只需通过大多数操作系统中提供的 WebDAV 功能即可 有没有办法做到这一点 对我来说重要的是不需要第三方软件 有多种方法可以做到这一点 不知道你的情况如何 所以这里是
  • 在 TypeScript 中使用元组(类型推断)

    给出这个稍微人为的例子 List Of Names map name index gt name index 2 map name num gt 为什么 name 和 num 位于 type 的最后一行string number显然推断为字
  • 我可以在不安装 Visual Studio 的情况下使用 mstest.exe 吗?

    我想使用 mstest exe 在生成服务器上运行单元测试 但我不想在生成服务器上安装 Visual Studio 我可以只安装 MSTest 而不使用 Visual Studio 吗 无需 Visual Studio 即可运行 mstes
  • PHP:将文档/文本解析为句子

    我正在寻找类似的 PHP 版本 http journals ecs soton ac uk java tutorial intl collat ion textBound html http journals ecs soton ac uk
  • vim:执行编辑器命令列表

    vim 有没有办法给出编辑器命令列表 我想执行一系列 全局 命令 并且这些命令有一些模式 因此 我理想地希望生成命令列表 使用正则表达式搜索和替换 然后运行它们 而不必键入每个命令 谢谢 高拉夫 更新 s buffer register g
  • 是否可以在 Mountain Lion 上当前的 Xcode 4.6.1 工具链中启用 _LIBCPP_DEBUG2?

    这个线程 http comments gmane org gmane comp compilers clang devel 16838是对 clang 的 libc 调试模式的早期讨论 该模式通过定义来启用 LIBCPP DEBUG2在编译
  • 在 R 中添加新行

    我需要在后面添加一个新行 我的数据如下所示 1 60112 486 100 xxx BS 1 1 486 100 yyy TE I need 1 60112 486 100 xxx BS 1 1 486 100 yyy TE 我怎样才能实现
  • 无法达到最佳性能

    我正在努力达到每个人的最佳表现SM从下面的代码 峰值位于 25 GFlops GTX275 GT200 Arch 之间 此代码最多提供 8 GFlops global void new ker float x int index threa
  • 适用于 GAE 的 Python 无头浏览器

    我正在尝试将 Angular js 客户端与 Google Appengine 上的 webapp2 一起使用 为了解决 SEO 问题 我们的想法是使用无头浏览器在服务器端运行 javascript 并将生成的 html 提供给爬虫 有没有
  • 如何覆盖 Nixos configuration.nix 中的 2(两个)包

    我的configuration nix 中有一些需要覆盖的包 所以我写的代码如下 nixpkgs config allowUnfree true packageOverrides pkgs rec mumble pulse audio mu
  • 在 JavaScript 中获取字体规格?

    我目前正在开发一个使用 HTML5 画布作为渲染目标的 JavaScript 项目 为了使我的代码能够很好地与我提供的 严格指定的 接口配合使用 我需要能够获取一种字体并提取该字体的上升和下降高度 这将使客户能够更准确地定位文本 我知道我可
  • 如何去掉多余的双引号?

    在格式错误的 csv 文件中 有一行数据带有额外的双引号 例如最后一行 Name Comment Peter Nice singer Paul Love folk songs 如何删除周围的双引号folk并将字符串替换为 Name Comm
  • 在 3NF 中找到关系,但在 BCNF 中找不到关系

    我一直在阅读许多不同的资料来了解如何区分 3NF BCNF 中的关系 到目前为止 这是我的理解 我将使用这种关系作为例子 R A B C D E and F A gt B B C gt E E D gt A 首先我们必须找到关系的关键 我用
  • 你如何解析悬空的 else ?

    我正在为 C 语言编写一个编译器 我只剩下一个问题需要解决 如何处理悬空的 else 原来的规则是这样的 A gt if 表达式 语句 if 表达式 语句 else 语句 摆脱左递归后 A gt if 表达式 语句 B B gt else
  • 如何有效地比较两个无序列表(而不是集合)?

    a 1 2 3 1 2 3 b 3 2 1 3 2 1 a 和 b 应该被认为是相等的 因为它们具有完全相同的元素 只是顺序不同 问题是 我的实际列表将由对象 我的类实例 组成 而不是整数 O n The 柜台 https docs pyt