从组合列表中获取唯一组

时间:2021-07-13 17:19:32

标签: python combinations

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

output needed=
1) [[0,1,2],[5, 6, 8],[3,4,11],[7,9,10]],
2) [[0, 2, 3],[1,4,7],[5, 6, 8],[9,10,11]]

所以我得到了一个包含三组所有可能组合的列表,我想知道我是否能得到一个包含所有元素的组合列表。即 [0,1,2,3,4,5,6,7,8,9,10,11] 但在一组 3 提前致谢

2 个答案:

答案 0 :(得分:0)

这种组合是一种数学技术,用于计算列表或项目集合中可能的排列数量。 python中两个列表的唯一组合可以通过将第一个列表的每个元素与第二个列表的元素配对来实现。
它可以通过使用方法来完成,即 itertools 包的 permutation()zip() 函数,另一种方法是 通过使用 product() itertools 和 zip() 函数。

示例如下:

import itertools
from itertools import product

list_1 = ["b","c","d"]
list_2 = [1,4,9]

unique_combinations = []

unique_combinations = list(list(zip(list_1, element))
                           for element in product(list_2, repeat = len(list_1)))

答案 1 :(得分:0)

如果您只在数组中使用数字数据类型,最好使用 numpy

根据我从您的问题中收集到的信息,您需要一个包含 combinations 中所有唯一元素的数组,并以任意随机方式将它们分成三组。

import numpy as np

# Extracting the unique elements.
combinations = np.unique(combinations)

# Shuffling the elements.
combinations = np.random.permutation(combinations)

# Reshaping the unique elements in groups of three.
combinations = combinations.reshape((-1, 3))

参考:NumPy docs