Как я могу получить все комбинации списка? - PullRequest
2 голосов
/ 19 июня 2020

Я пытаюсь получить все комбинации списка. Вот пример:

>>> l = [1, 2, 3]
>>> combo = something
>>> print(combo)
[1, 2, 3, 12, 13, 21, 23, 31, 32, 123, 132, 213, 231, 312, 321]

Вот что я пробовал до сих пор:

>>> import itertools
>>> numbers = [1, 2, 3]
>>> l = list(itertools.permutations(numbers))
>>> print(l)
[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]

Как мне получить результат [1, 2, 3, 12, 13, 21, 23, 31, 32, 123, 132, 213, 231, 312, 321]?

Ответы [ 2 ]

5 голосов
/ 19 июня 2020

Рабочий код:

import itertools

numbers = [1, 2, 3]
result = []
for n in range(1, len(numbers) + 1):
    for x in itertools.permutations(numbers, n):  # n - length of each permutation
        result.append(int(''.join(map(str, x))))
print(result)

Вывод:

[1, 2, 3, 12, 13, 21, 23, 31, 32, 123, 132, 213, 231, 312, 321]
0 голосов
/ 19 июня 2020

Я считаю, что функция, на которую вы смотрите:

itertools.combinations(iterable, r)

Она выполняет комбинацию массива итерация в r элементы.

Итак:

>>> import itertools
>>> numbers = [1,2,3]
>>> l = list(itertools.combinations(numbers,2)) # combinations of two
>>> print(l)
[(1, 2), (1, 3), (2, 3)]

Более подробную информацию вы можете получить в документации .

...