Как создать все возможные комбинации из N слотов с V возможными значениями? [Дубликат]

1

У меня есть N заказанных слотов. Каждый слот имеет значение внутри V возможных значений

N = 4 # number of objects (e.g. slots)
possible_values = ['A','B']
V = len(possible_values )

Как можно создать список всех возможных комбинаций в Python? Например, когда V = 2 и N = 4, я хотел бы получить следующий список из 2 ** 4 различных комбинаций:

combinations = [
    [ 'A', 'A', 'A', 'A' ], # combination 0
    [ 'A', 'A', 'A', 'B' ], # combination 1
    [ 'A', 'A', 'B', 'A' ], # combination 2
    [ 'A', 'A', 'B', 'B' ], # combination 3
    [ 'A', 'B', 'A', 'A' ], # combination 4
    [ 'A', 'B', 'A', 'B' ], # combination 5
    [ 'A', 'B', 'B', 'A' ], # combination 6
    [ 'A', 'B', 'B', 'B' ], # combination 7
    [ 'B', 'A', 'A', 'A' ], # combination 8
    [ 'B', 'A', 'A', 'B' ], # combination 9
    [ 'B', 'A', 'B', 'A' ], # combination 10
    [ 'B', 'A', 'B', 'B' ], # combination 11
    [ 'B', 'B', 'A', 'A' ], # combination 12
    [ 'B', 'B', 'A', 'B' ], # combination 13
    [ 'B', 'B', 'B', 'A' ], # combination 14
    [ 'B', 'B', 'B', 'B' ], # combination 15
]

Я бы хотел, чтобы код работал, когда N и V меняются. Например, когда N = 9 слотов и V = 4 возможных значений, я ожидаю список возможных комбинаций 4 ** 9 = 262144.

  • 2
    Вы пометили это с помощью numpy и arrays , но вы используете списки списков. Какой ответ ты хочешь?
  • 4
    help(itertools.product)
Показать ещё 12 комментариев
Теги:
base

1 ответ

-1
Лучший ответ
N = 4 # number of objects (e.g. slots)
possible_values = ['A','B']

result = itertools.product(possible_values, repeat=N)

print(list(result))
  • 3
    Не уверен, почему за это проголосовали, он дает ответ на вопрос. Компенсационный! Я бы посоветовал, если вы отказываетесь оставить отзыв, в противном случае трудно улучшить.
  • 0
    @AChampion Вопрос действительно плохой, но я считаю, что люди должны голосовать за плохой вопрос, а не за ответ. Ну что ж.
Показать ещё 16 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню