如何使用Python统计矩阵列表中指定数字的出现次数
Python矩阵指定数字计数函数实现方案
现有代码存在两个核心问题:
- 函数内部没有实现计数逻辑,也没有返回值
- 函数定义范围内直接调用自身,运行会触发递归深度超限错误
实现方案
方案1:嵌套循环实现(易读性优先)
适合新手理解逻辑,代码可读性高:
def count(matrix: list, number: int): total = 0 # 遍历矩阵每一行 for row in matrix: # 遍历当前行的每个元素 for num in row: if num == number: total += 1 return total # 测试调用 print(count([[1, 4, 0, 0, 6, 3], [0, 3, 4, 0, 0, 0], [0, 0, 5, 6, 0]], 0))
运行后输出结果为9,和测试用例中数字0的实际出现次数一致。
方案2:生成器表达式实现(简洁性优先)
代码更精简,运行效率和方案1无明显差异:
def count(matrix: list, number: int): return sum(num == number for row in matrix for num in row) # 测试调用 print(count([[1, 4, 0, 0, 6, 3], [0, 3, 4, 0, 0, 0], [0, 0, 5, 6, 0]], 0))
这里利用了Python中布尔值属于int子类的特性,True等价于1、False等价于0,直接求和即可得到总匹配次数。
可选:增加异常兼容处理
如果使用场景存在输入不规范的可能(比如矩阵中某行不是列表、元素类型不统一),可以增加类型判断逻辑避免报错:
def count(matrix: list, number: int): total = 0 for row in matrix: # 跳过非列表格式的行 if not isinstance(row, list): continue for num in row: if num == number: total += 1 return total
内容的提问来源于stack exchange,提问作者newatcoding22
相关产品推荐
相关产品推荐

