Создайте многомерный массив всех возможных триплетов

#python #arrays #python-3.x #multidimensional-array

#питон #массивы #python-3.x #многомерный массив

Вопрос:

У меня есть массив, содержащий список криптосимволов, например (так как их более тысячи).

 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))  

Комментарии:

1. Большое вам спасибо! И спасибо вам за то, что вы предложили обращаться с тройняшками индивидуально, что на самом деле должно вполне соответствовать моей ситуации. Моя забота впадала в бесконечный цикл. Сейчас у меня проходит первый тест, но он выглядит многообещающим.