问题标签 [set-operations]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
32 浏览

c# - C# Evaluate Tree 表达式,其中叶节点是整数集

我需要在 C# ad-hoc 查询中评估树表达式的值节点是数字集的位置。

示例表达式 Set-A NOT SET-B AND (SET-C OR SET-D)

表达式可能会变得相当复杂——我的数据集来自回答有许多问题的调查的受访者。我想最终得到一组以特定方式回答特定问题的受访者。

我已经尝试构建一个树样式评估器,但是虽然它在大多数情况下都有效,但在其他情况下却失败了(主要是如果我将 NOT 放在不同的地方)。

有没有人以前做过这个并想出一个他们想分享的优雅的解决方案?最好在 C# 中 - 显然我使用 LINQ 来执行集合操作,我需要一种方法来构建和评估以不同方式组合多个集合的树。

这是我当前的代码(添加以回应评论)

0 投票
2 回答
135 浏览

javascript - 是否有一个javascript函数用于从一组集合中找到第一个包含一个元素的集合(如果该组存在这样的集合)?

我正在尝试找到解决如下问题的方法,其中我有三组(技术上是数组,但始终保证它们没有重复的元素,并且它们的元素总是按递增顺序排列),我需要确定第一组数字,其中将包含每个集合中的一个元素并且本身没有重叠值(如果这样的数字集合可以存在给定集合组):

在我跳入一个我怀疑必须是递归的解决方案并对 ol' noodle 征税之前,我想看看 javascript 是否有一个内置函数来确定这类事情,或者是否有一个简单的方法我'米失踪。我SetMDN的调查没有运气。

该解决方案将需要适用于我正在寻找这个“合并集”的任意数量的集合。

0 投票
3 回答
112 浏览

c# - 集合运算(补和差)

如何在不使用任何集合和 Linq 的情况下在 C# 中进行集补和集差?

我们有两个数组:

补必须是:arr3 {5,6,7,8}而差必须是:arr4 {1,2}

我尝试将一组添加到另一组,然后找到重复项,但无法做到。

0 投票
1 回答
672 浏览

python-3.x - 计算列表差异时如何避免“TypeError:unhashable type:'dict'”?

我正在使用 Python 3.8。我有两个列表,每个元素都是一个 dict ...

我想找到原本在“existing_dicts”中的“cur_dicts”中不再存在的dicts。所以在上面的例子中,

是我想要的结果,因为它在“existing_dicts”中但不在“cur_dicts”中。我尝试了以下内容以找出差异...

有什么更好的方法来做到这一点?

0 投票
2 回答
134 浏览

list - 有什么可以在 Erlang 中执行两个列表的联合吗?

我发现Erlang中有集合的集合操作,但我找不到列表的类似操作。我想在 Erlang 的列表中执行基本的联合操作:

如何在 Erlang 中执行此操作?

不过,我使用集合做了以下事情,并且它有效。我只是想知道,如果我可以在没有设置的情况下做到这一点。

0 投票
2 回答
1039 浏览

r - 从扰乱对象中提取交集列表

我正在与UpSetR进行一些比较,并且我想保存属于每个交集的元素列表。这可能吗?我到处都找不到...

手动完成会很乏味(很多列表),而且因为它们是经过计算的,所以无法保存它们令人沮丧

0 投票
3 回答
224 浏览

r - 如何在 R 中将一列的元素与 group_by 相交

让我们假设,我的数据就像

我想总结/变异 col1,其中它的元素在同一组中相交(通过 group_id)。我需要的输出就像(如果总结)

或像这样(如果变异)

我可以通过使用函数轻松地创建一个联合,toString但我为如何在输出中包含公共元素而摸不着头脑。基本上intersect需要至少两个参数,因此在这里不起作用。

dput(df) 如下

0 投票
2 回答
54 浏览

r - 按分隔符拆分列并删除其他值中包含的值

我有一个由“;”分隔的类别列。IE 值:

它的意思是:

当前产品属于“A > B > C”类别,属于“A > B > D”类别和“A > B > C > C1”类别

如果一个类别已包含在另一个类别中,则应将其删除。所以目标是:

因为“A > B > C > C1”包含“A > B > C”。

我该如何解决这个问题?

注意:我知道有数百个问题看起来很相似。但我只是找不到解决方案。

0 投票
0 回答
79 浏览

python - 有效地计算许多集合的异或/对称差(集合列表)

我有任意数量的 Python 集,例如

我想计算它们的“组合”对称差异,即我想对它们进行异或:

在我的用例中,我实际上是在处理集合列表:

目前,我正在遍历列表以实现我想要的:

我想知道是否有更有效的方法,理想情况下无需通过 Python for 循环。集合操作在 Python 中实际上非常快,但我的列表可能会变得相当长,因此具有讽刺意味的是 for 循环本身成为了瓶颈。


编辑 (1)

我假设我列表中所有集合的每个可能条目在我列表中的所有集合中出现不超过两次。


编辑 (2)

一些基准:

test_loop1: 121 µs ± 321 ns

test_loop2: 112 µs ± 3.16 µs

test_reduce1: 9.89 毫秒 ± 20.6 微秒

test_dict1: 695 µs ± 5.11 µs

0 投票
0 回答
38 浏览

python - 使用 networkx 设置操作

我正在使用 networkx,我需要进行设置操作。特别是我想在一组边缘之间做一个交集。

我需要的操作涉及到 EdgeView 类型和 set 类型。问题在于,对于集合类型,其中的对是有序的,但图是无向的,没有顺序。

我怎样才能以干净有效的方式解决?

问题示例;假设一个有边 (0,1) 的无向图 G:

上面的代码打印 True 后跟 False。集合操作保持这种一致性是合理的——即两次为真。