Python вычислить все возможные позиции n элементов в списке - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь отобразить список комбинаций, но у меня возникли проблемы с тем, чтобы использовать эту функцию для ВСЕХ n. Например, сколько способов разместить n единиц в k позициях.

Это то, что я пытался сделать. n = 2 и k = 6 в этой ситуации

def ff():
    x_list = []
    for i in range(6):
        for j in range(6)[i+1::]:
            new_list = [0 for x in range(6)]
            new_list[i] = 1
            new_list[j] = 1
            x_list.append(new_list)
    return x_list
ff()

Например, для n = 3

def ff():
    x_list = []
    for i in range(6):
        for j in range(6)[i+1::]:
            for k in range(6)[j+1::]:
                new_list = [0 for x in range(6)]
                new_list[i] = 1
                new_list[j] = 1
                new_list[k] = 1
                x_list.append(new_list)
    return x_list
ff()

Однако я, очевидно, не хочу переписывать ту же функцию.

1 Ответ

1 голос
/ 16 июня 2020

вы можете использовать itertools.combinations, чтобы получить все возможные комбинации индексов, и установить 1 точно так же, как и вы:

from itertools import combinations

def ff(n):
    x_list = []
    for combination in combinations(range(6), n):
        new_list = [0 for x in range(6)]
        for i in combination:
            new_list[i] = 1
        x_list.append(new_list)
    return x_list

ff(1)
ff(2)
ff(3)

обратите внимание, что в документах они указывают " пример кода »того, как реализован сам combinations, думаю, вам будет интересно прочитать и понять!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...