python获取每个成员只出现一次的组合组

标签 python numpy combinations permutation

我正在尝试获取每个成员仅出现一次的排列/组合组 (r=2)

我使用 python 'combinations' 包来进行组合。

例如:成员为:a,b,c,d。 组合为:[a,b],[a,c],[a,d],[b,c],[b,d]...

我想要的输出是: [ {[a,b],[c,d]},{[a,c],[b,d]},{[a,d],[b,c]}...]

我想知道这种情况的术语是什么,以及是否已经有实现。

谢谢。

最佳答案

这是一种方法:

from itertools import combinations, chain
l = ['a','b','c','d']
c = list(combinations(l,2))
[set(i) for i in list(combinations(c,2)) if (len(set(l) & set(chain(*i))) == len(l))]
[{('a', 'b'), ('c', 'd')}, {('a', 'c'), ('b', 'd')}, {('a', 'd'), ('b', 'c')}]

说明

您可以使用itertools.combinations两次,以便从以下位置获取所有 2 个元组组合:

list(combinations(l,2))
[('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd')]

并仅选择那些元素集与原始列表的元素集相交的元素,len(set(l) & set(chain(*i))) == len(l)) 每种可能的组合。

关于python获取每个成员只出现一次的组合组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54200347/

相关文章:

mysql - 从 MySQL 中具有不同列的表的多个连接结果中删除重复项

python - 在 Python 中每 5 行分配 +1 值(增量)

python - NumPy 的 C-API : scalar multiplication in C

python - 如何使 __add__ 的 numpy 重载独立于操作数顺序?

python - 在 Python 中使用大小

c# - 及时计算组合

r - R中列表形式的向量元素的成对组合

python - self.__dict__.update(**kwargs) 风格是好还是坏?

python - Django MakeMessages 在 Windows 中缺少 xgettext

python - 为什么必须在 Keras/Tensorflow 2 中 reshape 输入?