Python或数学:如何计算列表元素的所有可能组合?



假设有一个列表[1,2,3,4,5],我需要获得元素(或'子列表')的所有可能组合的计数,例如1, 2, 3, 4, 5, 12, 13, 14, ..., 123, 124, ..., 12345

我知道如何得到nCr,r个元素与n个元素的列表的组合的计数。
Python 3.8或以上版本:

from math import comb
p, r = 5, 2
print(comb(p, r))

然后我可以做nC1 + nC2 +...+ nCn。但是有更好/更快的方法吗?

p, result = 5, 0
for r in range(1, 6):
result += comb(p, r)
print(result)

感谢您的回答。

这个概念在数学中称为幂集,它指的是给定集合的所有子集。你的问题是关于幂集2^n的大小,其中n是原始集的大小。这个总数包括空集,所以正如C4stor所说,您的总数将是2^n - 1

如果输入的所有元素都是唯一的,则上述答案有效。如果有重复的元素,则取每个元素的乘积(count + 1),并在最后再减去1以删除空集。

。[1,1,1,2,2,3]:我们的计数是3,2,1,所以我们的答案是4 * 3 * 2 - 1 = 23。

这个想法是,对于每个元素,你可以在你的子列表中从0到count(element)的任何地方。

这个特定的和等于2^n -1:-)

相关内容

  • 没有找到相关文章

最新更新