Python список всех возможных комбинаций из n членов данного главного списка - PullRequest
0 голосов
/ 05 августа 2020

Дан список l:

l = ['A', 'B', 'C']

Как мне написать функцию, которая возвращает все возможные уникальные комбинации n членов в списке списков? Порядок не имеет значения для уникальности. Выходы в этом примере будут (порядок вывода также не важен):

my_function(list=l, n=1)

[['A'], ['B'], ['C']]

my_function(list=l, n=2)

[['A', 'B'], ['A', 'C'], ['B', 'C']]

my_function(list=l, n=3)

[['A', 'B', 'C']]

Ответы [ 2 ]

2 голосов
/ 05 августа 2020

Вы можете использовать itertools.combinations для задачи:

from itertools import combinations

l = ['A', 'B', 'C']

def my_function(lst, n):
    rv = []
    for c in combinations(lst, n):
        rv.append(list(c))
    return rv

print(my_function(l, 1))
print(my_function(l, 2))
print(my_function(l, 3))

Распечатывает:

[['A'], ['B'], ['C']]
[['A', 'B'], ['A', 'C'], ['B', 'C']]
[['A', 'B', 'C']]
0 голосов
/ 05 августа 2020

Без Itertools:

a=['A','B','C']
def combi(a):

    result = [[]]
    for x in a:
       result.extend([subset + [x] for subset in result])
    return result
print(combi(a))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...