首页 > 解决方案 > 查找列表中的对数

问题描述

我有数字列表:

[5, 4, 3, 4, 2, 1, 3, 5, 3, 5, 3, 5,]

一对数字是相同的2个数字。例如,5 出现 4 次,所以我们有 2 对 5。在上面的列表中,我可以说我有 5 双。我希望输出计算列表中有多少对数字。

我试过这个,但卡住了。

list = [5,4,3,4,2,1,3,5]
print(list)
temp = 0
new_list = []
for index,x in enumerate(list):
    elm_count = list.count(list[index])
    if new_list:
        for ind, y in enumerate(new_list):
            if list[index] == new_list[ind]:
                continue
                if not elm_count % 2:
                    occ_count = elm_count/2
                    temp += occ_count
                    new_list.append(list[index])
                    continue

标签: pythonlist

解决方案


实现这一点的更简单方法是使用collections.Counter()with sum()as:

>>> my_list = [5, 4, 3, 4, 2, 1, 3, 5,3, 5, 3, 5,]

>>> sum(num//2 for num in Counter(my_list).values())
5

这里Counter()将生成一个dict以数字为并在列表中出现的数字作为其值的计数。然后我迭代它的值并使用生成器表达式计算每个数字的对数,并使用 对所有对数进行求和sum()

您可以参考以下文档了解更多详情:


推荐阅读