在Python中从列表元素中查找互斥集合的组合

2023-11-27

在我目前正在进行的一个项目中,我已经实现了大约 80% 我希望我的程序完成的任务,我对结果非常满意。

在剩下的 20% 中,我面临着一个让我有点困惑的问题,不知道如何解决。 这里是:

我想出了一个包含多个数字(任意长度)的列表列表 例如:

listElement[0] = [1, 2, 3]
listElement[1] = [3, 6, 8]
listElement[2] = [4, 9]
listElement[4] = [6, 11]
listElement[n] = [x, y, z...]

其中n可以达到40,000左右。

假设每个列表元素是一组数字(在数学意义上),我想做的是导出互斥集合的所有组合;也就是说,类似于上述列表元素的幂集,但排除所有非不相交集元素。

因此,为了继续 n=4 的示例,我想提出一个包含以下组合的列表:

newlistElement[0] = [1, 2, 3]
newlistElement[1] = [3, 6, 8]
newlistElement[2] = [4, 9]
newlistElement[4] = [6, 11] 
newlistElement[5] = [[1, 2, 3], [4, 9]]
newlistElement[6] = [[1, 2, 3], [6, 11]]
newlistElement[7] = [[1, 2, 3], [4, 9], [6, 11]]
newlistElement[8] = [[3, 6, 8], [4, 9]]
newlistElement[9] = [[4, 9], [6, 11]

例如,无效的情况是组合 [[1, 2, 3], [3, 6, 8]],因为 3 在两个元素中很常见。 有什么优雅的方法可以做到这一点吗?如果有任何反馈,我将非常感激。

我还必须指定我不想执行 powerset 函数,因为初始列表可能有相当多的元素(正如我所说,n 可能高达 40000),并且采用具有如此多元素的 powerset 永远不会完成。


我会使用发电机:

import itertools

def comb(seq):
   for n in range(1, len(seq)):
      for c in itertools.combinations(seq, n): # all combinations of length n
         if len(set.union(*map(set, c))) == sum(len(s) for s in c): # pairwise disjoint?
            yield list(c)

for c in comb([[1, 2, 3], [3, 6, 8], [4, 9], [6, 11]]):
   print c

这会产生:

[[1, 2, 3]]
[[3, 6, 8]]
[[4, 9]]
[[6, 11]]
[[1, 2, 3], [4, 9]]
[[1, 2, 3], [6, 11]]
[[3, 6, 8], [4, 9]]
[[4, 9], [6, 11]]
[[1, 2, 3], [4, 9], [6, 11]]

如果您需要将结果存储在单个列表中:

print list(comb([[1, 2, 3], [3, 6, 8], [4, 9], [6, 11]]))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中从列表元素中查找互斥集合的组合 的相关文章

  • pydev 调试器:严重警告:此版本的 python 似乎编译不正确(内部生成的文件名不是绝对的)[重复]

    这个问题在这里已经有答案了 通过运行 from sklearn datasets import fetch california housing import pandas as pd pd set option precision 4 m
  • Python逻辑运算符优先级[重复]

    这个问题在这里已经有答案了 哪个运算符优先4 gt 5 or 3 lt 4 and 9 gt 8 这会被评估为真还是假 我知道该声明3 gt 4 or 2 lt 3 and 9 gt 10 显然应该评估为 false 但我不太确定 pyth
  • 如何创建一个语句来打印以特定单词开头的单词? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何在 python 中打印从特定字母开始的单词 而不使用函数 而是使用方法或循环 1 我有一个字符串 想要打印以 m 开头的单词 S
  • Pandas 数据帧到 numpy 数组 [重复]

    这个问题在这里已经有答案了 我对 Python 很陌生 经验也很少 我已经设法通过复制 粘贴和替换我拥有的数据来使一些代码正常工作 但是我一直在寻找如何从数据框中选择数据 但无法理解这些示例并替换我自己的数据 总体目标 如果有人真的可以帮助
  • 更改 `base_compiledir` 以将编译后的文件保存在另一个目录中

    theano base compiledir指编译后的文件存放的目录 有没有办法可以永久设置theano base compiledir到不同的位置 也许通过修改一些内部 Theano 文件的内容 http deeplearning net
  • 如何从Python中的字符串中提取变量名称和值

    我有一根绳子 data var1 id 12345 name John White python中有没有办法将var1提取为python变量 更具体地说 我对字典变量感兴趣 这样我就可以获得变量的值 id和name python 这是由提供
  • Seaborn Pairplot 图例不显示颜色

    我一直在学习如何在Python中使用seaborn和pairplot 这里的一切似乎都工作正常 但由于某种原因 图例不会显示相关的颜色 我无法找到解决方案 因此如果有人有任何建议 请告诉我 x sns pairplot stats2 hue
  • 将 matplotlib 颜色图集中在特定值上

    我正在使用 matplotlib 颜色图 seismic 绘制绘图 并且希望白色以 0 为中心 当我在不进行任何更改的情况下运行脚本时 白色从 0 下降到 10 我尝试设置 vmin 50 vmax 50 但在这种情况下我完全失去了白色 关
  • 如何使用列表作为pandas数据框中的值?

    我有一个数据框 需要列的子集包含具有多个值的条目 下面是一个带有 运行时 列的数据框 其中包含程序在各种条件下的运行时 df condition a runtimes 1 1 5 2 condition b runtimes 0 5 0 7
  • 无法在 osx-arm64 上安装 Python 3.7

    我正在尝试使用 Conda 创建一个带有 Python 3 7 的新环境 例如 conda create n qnn python 3 7 我收到以下错误 Collecting package metadata current repoda
  • python Soap zeep模块获取结果

    我从 SOAP API 得到如下结果 client zeep Client wsdl self wsdl transport transport auth header lb E authenticate self login res cl
  • 将名称字符串编码为唯一的数字

    我有一大堆名字 数以百万计 他们每个人都有一个名字 一个可选的中间名和一个姓氏 我需要将这些名称编码为唯一代表这些名称的数字 编码应该是一对一的 即一个名称只能与一个数字相关联 一个数字只能与一个名称相关联 对此进行编码的明智方法是什么 我
  • 默认情况下,Keras 自定义层参数是不可训练的吗?

    我在 Keras 中构建了一个简单的自定义层 并惊讶地发现参数默认情况下未设置为可训练 我可以通过显式设置可训练属性来使其工作 我无法通过查看文档或代码来解释为什么会这样 这是应该的样子还是我做错了什么导致默认情况下参数不可训练 代码 im
  • Tkinter - 浮动窗口 - 调整大小

    灵感来自this https stackoverflow com a 22424245 13629335问题 我想为我的根窗口编写自己的调整大小函数 但我刚刚注意到我的代码显示了一些性能问题 如果你快速调整它的大小 你会发现窗口没有像我希望
  • 当鼠标悬停在上面时,intellisense vscode 不显示参数或文档

    我正在尝试将整个工作流程从 Eclipse 和 Jupyter Notebook 迁移到 VS Code 我安装了 python 扩展 它应该带有 Intellisense 但它只是部分更糟糕 我在输入句点后收到建议 但当将鼠标悬停在其上方
  • 检查字典键是否有空值

    我有以下字典 dict1 city name yass region zipcode phone address tehsil planet mars 我正在尝试创建一个基于 dict1 的新字典 但是 它不会包含带有空字符串的键 它不会包
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户
  • 应用对数来导航树

    我曾经知道一种使用对数从树的一片叶子移动到树的下一个 有序 叶子的方法 我认为它涉及获取 当前 叶子的位置值 排名 并将其用作从根向下到新目标叶子的新遍历的种子 一直使用对数函数测试来确定是否沿着右或左节点向下到达叶子 我已经不记得如何运用
  • 列表值的意外更改

    这是我的课 class variable object def init self name name alias parents values table name of the variable self name 这是有问题的函数 f
  • Scrapy Spider不存储状态(持久状态)

    您好 有一个基本的蜘蛛 可以运行以获取给定域上的所有链接 我想确保它保持其状态 以便它可以从离开的位置恢复 我已按照给定的网址进行操作http doc scrapy org en latest topics jobs html http d

随机推荐

  • 从多线程使用 QSqlQuery

    我有很多 C 11 线程正在运行 它们有时都需要数据库访问 主要是我初始化数据库连接并打开数据库 Qt 文档说查询不是线程安全的 因此我使用全局互斥体 直到线程内存在 QSqlQuery 这可行 但是否保证有效 或者我有时会遇到问题 看看文
  • 如何在 Dart 代码中从 REST api 解码 utf-8?

    我正在尝试使用 REST API 从 Wordpress 站点创建新闻报道应用程序 但它是用 UTF 8 编码的 我是 Dart 新手 我所知道的是我可以通过字符数组而不是给出字符串 作为输入 来解码 Utf 8 那么如何为我的应用程序解码
  • 使用 javascript/jQuery 获取父 div 内的鼠标位置[重复]

    这个问题在这里已经有答案了 可能的重复 jQuery 获取元素内的鼠标位置 我有一个页面 在该页面内有一个 div 如果用户在该 div 内单击 它将存储他们在该 div 内单击的位置的 X Y 坐标 例如 如果我单击 div 的左上角 无
  • 未捕获错误:NOT_FOUND_ERR:appendChild 调用的 DOM 异常 8 [重复]

    这个问题在这里已经有答案了 可能的重复 javascript addChild 不起作用 错误发生在该片段的最后一行 var anchor a href imagename a var specialdiv document getElem
  • Elasticsearch 在 java api 中的内部命中

    我正在尝试使用 Java API 通过 elasticsearch 实现内部命中 但我找不到太多关于它的文档或其他人正在使用的示例 我的 JSON 搜索工作原理如下 query filtered query match all filter
  • 从数据库读取 BLOB(PDF 内容)并编辑和输出 PDF 编辑文件,无需创建物理文件

    我正在使用 Oracle 数据库并将 PDF 内容存储在 BLOB 字段中 我想读取BLOB内容 然后编辑并输出编辑后的内容 我需要做的编辑是 在 BLOB 内容上方添加标题 在每个页面上添加水印 在每个页面上添加页脚 然后我需要输出文件
  • HttpWebRequests 后续调用失败

    我知道这是一个模糊的问题 特别是因为我没有提供任何代码 但我正在开发一个 Net 2 0 应用程序 并且我们有一个 WebRequest 将数据发布到内部构建的 API 奇怪的事情发生在我们的第三个 并且总是第三个 后续请求上 该请求在请求
  • 伴生对象无法访问类上的私有变量

    来自 Scala REPL 的相当奇怪的行为 尽管以下编译没有问题 class CompanionObjectTest private val x 3 object CompanionObjectTest def testMethod y
  • 找到的程序集的清单定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)

    签署第三方程序集并将其添加到 GAC 后 我收到以下错误 程序集绑定程序日志条目也显示这个错误 它说不匹配的程序集不确定如何错误 因为我删除了所有 obj 和 bin 折叠并批量构建了应用程序 重新导入了 dll Assembly mana
  • Socket.IO 客户端 .js 文件位于哪里?

    我正在尝试让 socket io 节点库 工作 我的服务器端 js 正在工作 并且它正在监听 socket io 网站简单说明 这很好 但是 我要导入什么 JS 文件 我进入了node modules目录 在那里我通过npm安装了soc
  • 有没有办法在node.js的对象文字中指定ES6生成器方法?

    我似乎无法创建一个生成器方法作为对象文字 这是我的工作源代码 function getRecords data for var i 0 i lt data length i yield data i var records getRecor
  • 在 Python 中将重复项保留在列表中

    我知道这可能是一个简单的答案 但我无法弄清楚 Python 中将重复项保留在列表中的最佳方法是什么 x 1 2 2 2 3 4 5 6 6 7 输出应该是 2 6 我找到了这个链接 在 python 中查找 并保留 子列表的重复项 但我对
  • Scala 类无法覆盖扩展 java.util.comparator 的 Java 接口中的比较方法

    我目前正在开发一个 jEdit 插件的端口 以在 Scala 中编写所有代码 然而 我在某个时候被迫实现我自己的比较器 我的简化代码如下 class compare extends MiscUtilities Compare def com
  • StringBuilder 与 XmlTextWriter

    我试图从提供 Xml 内容的自定义 HttpHandler 中获得尽可能多的性能 我想知道哪个性能更好 使用 XmlTextWriter 类或临时 StringBuilder 操作 例如 StringBuilder sb new Strin
  • 具有自定义项目的 UIMenuController 不适用于 UICollectionview

    当长按 UICollectionViewCell 时 我添加了自定义菜单控制器 self becomeFirstResponder UIMenuItem menuItem UIMenuItem alloc initWithTitle Cus
  • 根据类为 DOM 元素添加事件监听器

    我有一张桌子 其中每个tr and td只有课程 我在选择课程时遇到问题td具有我需要的类的元素 HTML table tr class data td class cell 1 td td class cell2 td tr tr cla
  • 如何将 OrderBy 表达式数组传递给方法?

    我正在尝试增强我的存储库 以便它负责订购 我已经应用了来自的答案这个问题就存储库而言 我很确定它已经完成了 我遇到的问题是我不确定现在如何将数组传递给存储库中的方法 编译器一直对我大喊关于委托的事 在上面的链接问题中 作者本质上是在做我想做
  • 如何在 r 中绘制 3D 函数? [复制]

    这个问题在这里已经有答案了 我有一个 3D 函数 比方说 De Jong 函数 fdejong lt function x y return x 2 y 2 我怎样才能以3D方式绘制它的情节 我想实现与维基百科类似的效果 尝试这个 fdej
  • 向 iOS 应用程序添加拖放组件

    如果这看起来很模糊 我深表歉意 但我不知道还能怎么说 我正在尝试构建一个 iPad 应用程序 让用户可以使用他们需要的工具填充工作区 我需要一个让用户将组件拖放到应用程序界面中的示例 例如 如果我有一个应用程序 用户可以制作表单 并且我希望
  • 在Python中从列表元素中查找互斥集合的组合

    在我目前正在进行的一个项目中 我已经实现了大约 80 我希望我的程序完成的任务 我对结果非常满意 在剩下的 20 中 我面临着一个让我有点困惑的问题 不知道如何解决 这里是 我想出了一个包含多个数字 任意长度 的列表列表 例如 listEl