Как посчитать количество комбинаций в списке python - PullRequest
0 голосов
/ 21 февраля 2020

Мне нужна помощь для подсчета количества комбинаций в массиве списка в python.

Мне нужно подсчитать количество возможных комбинаций между тремя буквами во всех элементах, а затем найти наиболее повторил один. например, AB C, CDA, CCA, et c ...

Я создал для l oop, чтобы просмотреть каждый элемент списка, затем я попросите еще l oop проверить каждую комбинацию из трех букв и добавить ее в новый список. Я не уверен, как посчитать, сколько раз повторяется комбинация, а затем, чтобы найти режим, думаю, я мог бы использовать функцию max ().

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

lst = ["ABCDABCD", "ABDCABD", "ACCACABB", "BACDABC"] 

for combo in lst:
   for i in range (0,3):      
      combolst = []
      combolst.append(lst[i].split())
      print(combolst)

Я новичок в кодировании, поэтому я здесь. Спасибо!

1 Ответ

0 голосов
/ 21 февраля 2020

(при условии, что моя математическая память не является мусором) Итак, нас интересуют комбинации. Ваш код просто разбивает список и создает новый (как вы сказали). Тогда мы бы использовали формулу комбинации: n! / (Z! (Nz)!). Где:

  • n - количество элементов, в этом случае длина нашей рассматриваемой строки
  • z - это количество объектов, которые мы sh выберем

Таким образом, вы получите:

for combo in lst:
    n = math.factorial(len(combo))
    r = math.factorial(3)
    nMinR = math.factorial((len(combo) - 3))
    result = n/(r*nMinR)
    print(result)

Это для комбинации, если мы хотим перестановки (где порядок имеет значение)

for combo in lst:
        n = math.factorial(len(combo))
        nMinR = math.factorial((len(combo) - 3))
        result = n/(nMinR)
        print(result)

Я надеюсь, что понял ваш вопрос правильно. Вот некоторые чтения о комбинациях против перестановок (https://medium.com/i-math/combinations-permutations-fa7ac680f0ac). Имейте в виду, что приведенный выше код будет только распечатывать, сколько возможных комбинаций или перестановок возможны; на самом деле он не будет пытаться построить возможные значения

...