【问题标题】: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 编写的。

【问题讨论】:

    标签: python arrays python-3.x multidimensional-array


    【解决方案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))
    

    【讨论】:

    • 非常感谢!感谢您建议单独处理三胞胎,这实际上应该非常适合我的情况。我担心陷入无限循环。我现在正在运行第一个测试,但它看起来很有希望。
    猜你喜欢
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多