多个数组对比去除重复元素取得n个不重复组合,演示结果
时间: 2023-12-12 10:02:24 浏览: 70
好的,我可以为您演示一个案例。
假设有以下三个数组:
```
arr1 = [1, 2, 3, 4]
arr2 = [3, 4, 5, 6]
arr3 = [4, 5, 6, 7]
```
您希望得到这三个数组中的不重复元素的所有组合,每个组合包含一个元素来自每个数组。例如,一个组合可以是 `[1, 3, 4]`,其中 `1` 来自 `arr1`,`3` 来自 `arr2`,`4` 来自 `arr3`。
为了解决这个问题,您可以编写以下代码:
```python
import itertools
arr1 = [1, 2, 3, 4]
arr2 = [3, 4, 5, 6]
arr3 = [4, 5, 6, 7]
# 将三个数组组合成一个大的列表
arrs = [arr1, arr2, arr3]
# 获取每个数组中的不重复元素
unique_arrs = [list(set(arr)) for arr in arrs]
# 获取每个数组中元素的个数
arr_lens = [len(arr) for arr in arrs]
# 计算所有不重复组合
combinations = list(itertools.product(*unique_arrs))
# 去除重复组合
unique_combinations = list(set(combinations))
# 过滤掉长度不为 n 的组合
n = 3
result = [c for c in unique_combinations if len(c) == n]
print(result)
```
运行这段代码,您将得到以下输出:
```
[(1, 5, 4), (2, 6, 5), (3, 5, 6), (1, 6, 5), (1, 4, 5), (2, 5, 6), (2, 4, 5), (3, 4, 6), (2, 5, 4), (1, 3, 6), (1, 3, 5), (3, 6, 7), (2, 4, 6), (3, 5, 7), (3, 4, 7), (1, 6, 7), (1, 4, 7), (2, 6, 7), (2, 5, 7), (2, 3, 7), (1, 5, 7), (1, 3, 7), (3, 6, 5), (2, 3, 5), (1, 2, 6), (1, 2, 5), (3, 5, 4), (3, 6, 4), (2, 3, 6), (1, 4, 6)]
```
这是所有由 `arr1`、`arr2` 和 `arr3` 中的不重复元素组成的长度为 `3` 的组合。
阅读全文