#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. Большое вам спасибо! И спасибо вам за то, что вы предложили обращаться с тройняшками индивидуально, что на самом деле должно вполне соответствовать моей ситуации. Моя забота впадала в бесконечный цикл. Сейчас у меня проходит первый тест, но он выглядит многообещающим.