![](/img/trans.png)
[英]Python or math: How to count all possible combinations of a list's elements?
[英]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)!)。 在哪里:
因此你會得到:
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.