You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3实现:如何返回列表中相同元素的配对数量

实现Python3中的sockMerchant函数

问题描述

需要实现函数sockMerchant(n, ar),参数说明:

  • n:列表ar的元素总数
  • ar:包含袜子编号的目标列表

函数需返回列表中相同元素的配对数量。例如给定列表[1,2,1,3,2,4,1],其中能组成(1,1)、(2,2)两对,因此返回2。

解法1:手动字典统计

通过遍历列表统计每个袜子编号的出现次数,再计算每个次数能组成的配对数(次数整除2),最后累加所有配对数:

def sockMerchant(n, ar):
    sock_count = {}
    total_pairs = 0
    # 统计每个袜子的数量
    for num in ar:
        if num in sock_count:
            sock_count[num] += 1
        else:
            sock_count[num] = 1
    # 计算总配对数
    for count in sock_count.values():
        total_pairs += count // 2
    return total_pairs

解法2:使用collections.Counter简化代码

利用Python标准库的Counter类可以直接统计元素出现次数,代码更简洁:

from collections import Counter

def sockMerchant(n, ar):
    count = Counter(ar)
    return sum(c // 2 for c in count.values())

测试示例

调用sockMerchant(7, [1,2,1,3,2,4,1]),两种解法都会返回2,符合预期。

注:参数n在实际计算中可以不用,因为len(ar)就是n,但为了符合题目函数定义要求,仍保留该参数。

内容的提问来源于stack exchange,提问作者HAFZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 21:35:22