如何计算组合

时间:2013-05-28 10:55:51

标签: list python-2.7 combinations counting

我想知道如何计算列表中的组合数。更确切地说,我有一个由6个随机选择的数字组成的较小列表组成的列表,我想计算每个组合在较大列表中出现的次数,然后最终显示最少出现的组合。到目前为止我尝试使用Counter(),但它似乎无法计算列表。 这是我想做的一个例子:

list = [[1,2,3,4,5,6],[1,5,16,35,55,22],[1,2,3,4,5,6],[5] ,25,35,45,55,10],[1,5,16,35,55,22],[1,2,3,4,5,6],[9,16,21,22,23 ,6],[9,16,21,22,23,6]]

所以在对组合进行计数后,它应该打印组合[5,25,35,45,55,10] 因为它只在列表中出现过一次

仅供参考,该列表将随机生成,存储大约10亿个组合,但考虑到数字范围,只有1.75亿种可能的组合

仅供参考2我对python非常陌生

1 个答案:

答案 0 :(得分:0)

构造Counter实例时,可以将列表转换为元组;后者是可以清除的,这是一个对象需要能够作为词典的关键词的属性。

>>> from collections import Counter
>>> l = [[1,2,3,4,5,6],[1,5,16,35,55,22],[1,2,3,4,5,6],[5,25,35,45,55,10],[1,5,16,35,55,22],[1,2,3,4,5,6],[9,16,21,22,23,6],[9,16,21,22,23,6]]
>>> c = Counter(tuple(e) for e in l)
>>> c
Counter({(1, 2, 3, 4, 5, 6): 3, (1, 5, 16, 35, 55, 22): 2, (9, 16, 21, 22, 23, 6): 2, (5, 25, 35, 45, 55, 10): 1})
>>> list(c.most_common()[-1][0])
[5, 25, 35, 45, 55, 10]