创建所有可能的三元组的多维数组
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))
【讨论】:
非常感谢!感谢您建议单独处理三胞胎,这实际上应该非常适合我的情况。我担心陷入无限循环。我现在正在运行第一个测试,但它看起来很有希望。以上是关于创建所有可能的三元组的多维数组的主要内容,如果未能解决你的问题,请参考以下文章