Лучший способ генерировать все комбинации в массиве, которые содержат определенный элемент в нем - PullRequest
0 голосов
/ 21 сентября 2018

Я знаю, что могу легко получить все комбинации, но есть ли способ получить только те, которые содержат определенный элемент списка?Я приведу пример.

Допустим, у меня есть

arr = ['a','b','c','d']

Я хочу получить все комбинации с длиной (n), содержащие 'a', например, если n = 3:

[a, b, c]
[a, b, d]
[a, c, d]

Я хочу знать, есть ли лучший способ получить его без генерации всех комбинаций.Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Я бы поступил следующим образом:

  1. Удалить 'a' из массива
  2. Создать все комбинации из 2 элементов из уменьшенного массива
  3. Для каждой комбинациивставьте «а» во всех трех возможных местах
0 голосов
/ 21 сентября 2018

Вы можете использовать комбинацию itertools и list comprehension.Как: импорт itertools

import itertools

arr = ['a', 'b', 'c', 'd']
temp = itertools.combinations(arr, 3)
result = [list(i) for i in list(temp) if 'a' in i]
print(result)

вывод:

[['a', 'b', 'c'], ['a', 'b', 'd'], ['a', 'c', 'd']]
...