创建所有可能的三元组的多维数组

Posted

技术标签:

【中文标题】创建所有可能的三元组的多维数组【英文标题】:Create multidimensional array of all possible triplets 【发布时间】:2022-01-15 19:58:37 【问题描述】:

我有一个包含加密符号列表的数组,例如。 (因为有一千多个)

symbols = ['agve', 'age', 'ageur', 'agfi']

我需要创建一个包含所有可能组合的多维数组,例如。

combinations = [
                 ["agve", "age", "ageur"],
                 ["agve", "age", "agfi"],
                 ["age", "ageur", "agfi"],
               ...

生成的数组不应有重复的排列,例如["agve", "age", "ageur"]["agve", "ageur", "age"]

老实说,我什至不知道从哪里开始。我能得到的最接近的是建立一个 包含一些对的数组(然后,没有写出来,目标是逐步搜索并添加缺失的组合):

    array_length = len(symbols)
    combinations = []
    current      = 0
    for i in range(array_length-3):
        combinations.append([symbols[current], symbols[current+1], symbols[current+2]])
        current += 1

任何帮助将不胜感激。我的项目的其余部分是用 Python 3.8 编写的。

【问题讨论】:

【参考方案1】:

这需要占用大量内存,您可以一次考虑每个三元组吗?无论哪种方式,最简单的方法可能是 itertools.combinations。

from itertools import combinations

# Consider each individually
for triplet in combinations(symbols, 3):
    #DO SOMETHING
    pass

# Create the multidimentional array as you wanted
triplets = list(combinations(symbols, 3))

【讨论】:

非常感谢!感谢您建议单独处理三胞胎,这实际上应该非常适合我的情况。我担心陷入无限循环。我现在正在运行第一个测试,但它看起来很有希望。

以上是关于创建所有可能的三元组的多维数组的主要内容,如果未能解决你的问题,请参考以下文章

遍历多维数组并打印所有可能性

如何获得多个多维数组的所有可能交集?

动态多维数组自行覆盖

python怎么操作多维数组元素

动态创建多维对象/数组

js多个(N)个数组的的元素组合排序算法,多维数组的排列组合或多个数组之间的排列组合