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
相关产品推荐
相关产品推荐

