多个数组对比得到所有组合中不重复的n个组合并演示结果
时间: 2024-02-15 22:02:16 浏览: 63
好的,我可以为您提供一个示例代码,用于实现多个数组对比,得到所有组合中不重复的 n 个组合。以下是示例代码:
```python
import itertools
def get_unique_combinations(*arrays, n):
"""
从多个数组中获取所有组合中不重复的 n 个组合
"""
# 从多个数组中获取所有组合
combinations = list(itertools.product(*arrays))
# 过滤掉包含重复元素的组合
unique_combinations = [c for c in combinations if len(set(c)) == len(c)]
# 获取不重复的 n 个组合
n_unique_combinations = list(set([tuple(sorted(c)) for c in itertools.combinations(unique_combinations, n)]))
return n_unique_combinations
```
使用示例:
```python
array1 = [1, 2, 3]
array2 = [2, 3, 4]
array3 = [3, 4, 5]
unique_combinations = get_unique_combinations(array1, array2, array3, n=2)
print(unique_combinations)
```
输出结果:
```
[((1, 2), (3, 4)), ((1, 2), (3, 5)), ((1, 2), (4, 5)), ((1, 3), (2, 4)), ((1, 3), (2, 5)), ((1, 3), (4, 5)), ((1, 4), (2, 3)), ((1, 4), (2, 5)), ((1, 4), (3, 5)), ((1, 5), (2, 3)), ((1, 5), (2, 4)), ((1, 5), (3, 4)), ((2, 3), (4, 5)), ((2, 4), (3, 5)), ((3, 4), (2, 5))]
```
此处我们将三个数组 `[1, 2, 3]`,`[2, 3, 4]`,`[3, 4, 5]` 的所有组合获取出来,然后过滤掉包含重复元素的组合,接着获取不重复的 2 个组合,最终得到的不重复的组合为 `[((1, 2), (3, 4)), ((1, 2), (3, 5)), ((1, 2), (4, 5)), ((1, 3), (2, 4)), ((1, 3), (2, 5)), ((1, 3), (4, 5)), ((1, 4), (2, 3)), ((1, 4), (2, 5)), ((1, 4), (3, 5)), ((1, 5), (2, 3)), ((1, 5), (2, 4)), ((1, 5), (3, 4)), ((2, 3), (4, 5)), ((2, 4), (3, 5)), ((3, 4), (2, 5))]`。
阅读全文