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

如何统计整数匹配次数分布?现有Python代码问题求解

问题分析与解决方案

首先,咱们来拆解下你遇到的核心问题:

  1. 你的searchAlgorithm函数目前只是打印每个子数组的匹配次数,但没有返回这些值——这就导致你尝试判断searchAlgorithm(a, b) == 2时,实际是在和None(无返回值函数的默认返回值)做比较,自然永远不成立,统计结果只能是0。
  2. 函数里的else: x == 0是个双重错误:一是这行代码只是做了个无效的比较,根本没修改x的值;二是逻辑本身就不对——我们要统计的是目标列表中所有在子数组里的元素数量,不是只要有一个元素不匹配就把计数清零。

第一步:修正searchAlgorithm函数

我们需要让函数正确统计每个子数组的匹配次数,并且返回这些次数的列表(而不是仅打印):

def searchAlgorithm(target, array):
    match_counts = []  # 存储每个子数组的匹配次数
    for sublist in array:  # 直接遍历子数组,比用索引更直观
        count = 0
        for num in target:
            if num in sublist:
                count += 1
        match_counts.append(count)
    return match_counts  # 返回所有匹配次数的列表

a = [8, 12, 14, 26, 27, 28]
b = [[4, 12, 17, 26, 30, 45], [8, 12, 19, 24, 33, 47], [3, 10, 14, 31, 39, 41], [4, 12, 14, 26, 30, 45]]

# 调用函数获取结果
result = searchAlgorithm(a, b)
print("每个子数组的匹配次数:", result)  # 输出:[2, 2, 1, 3],和你描述的一致

第二步:统计1、2、3的出现次数

现在有了匹配次数的列表,直接用列表的count()方法就能轻松统计指定数字的出现次数:

# 统计各次数的出现频次
count_1 = result.count(1)
count_2 = result.count(2)
count_3 = result.count(3)

print(f"匹配次数为1的出现次数:{count_1}")  # 输出:1
print(f"匹配次数为2的出现次数:{count_2}")  # 输出:2
print(f"匹配次数为3的出现次数:{count_3}")  # 输出:1

补充说明:原代码的问题根源

  • 无返回值导致你无法捕获函数的计算结果,只能拿到None,这是统计失败的直接原因。
  • 原函数里的else分支逻辑完全错误,如果改成x = 0,会导致只要有一个目标元素不在子数组里,计数就被清零,根本无法得到你想要的2、2、1、3结果。

这样修改后,就能完美实现你需要的两项统计功能啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:30:03