繁体   English   中英

如何计算python列表中的组合数量

[英]How to count amount of combinations in a python list

我需要一些帮助来计算 python 中列表数组中的组合数量。

我需要计算所有元素中三个字母之间可能组合的数量,然后找到最重复的一个。 例如,ABC、CDA、CCA 等...

我创建了一个for循环来查看列表的每个元素,然后我有另一个循环来检查三个字母的每个组合并将其添加到新列表中。 我不确定如何计算组合重复的次数,然后找到模式,我想我可能会使用 max() 函数。

这是我拥有的代码的一部分,但它不像我期望的那样工作,因为它只是将列表的每个项目添加到一个独立的列表中。

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

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

我是编码新手,所以这就是我在这里的原因。 谢谢!

(假设我的数学记忆不是垃圾)好吧,我们对组合感兴趣。 您的代码只是拆分列表并创建一个新列表(如您所说)。 然后我们将使用组合公式:n!/(z!(nz)!)。 在哪里:

  • n 是元素的数量,在这种情况下是我们所讨论的字符串的长度
  • z 将是我们希望选择的对象数量

因此你会得到:

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 )。 请记住,上面的代码只会打印出有多少可能的组合或排列; 它实际上不会尝试构造可能的值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM