如何比较两个布尔列表?Python编写真/假阳性计数函数需求
计算新冠检测真阳性(TP)与假阳性(FP)的Python函数
问题说明
给定两个长度为10的布尔列表:
HasCovid:对应编号患者实际是否感染新冠(True为感染,False为未感染)TestsPositive:对应编号患者的新冠检测结果是否为阳性(True为阳性,False为阴性)
需要实现两个函数:
num_TP:统计真阳性数量(实际感染且检测阳性的患者)num_FP:统计假阳性数量(未感染但检测阳性的患者)
函数实现
def num_TP(has_covid, tests_positive): # 统计同时满足"实际感染"和"检测阳性"的患者数量 return sum(hc and tp for hc, tp in zip(has_covid, tests_positive)) def num_FP(has_covid, tests_positive): # 统计满足"未感染"但"检测阳性"的患者数量 return sum(not hc and tp for hc, tp in zip(has_covid, tests_positive))
测试示例
用题目提供的测试数据验证函数:
# 题目给定的患者感染状态与检测结果 HasCovid = [True, True, True, False, False, True, False, True, False, False] TestsPositive = [True, False, True, False, True, True, False, True, False, True] # 输出计算结果 print("真阳性数量:", num_TP(HasCovid, TestsPositive)) # 输出:4 print("假阳性数量:", num_FP(HasCovid, TestsPositive)) # 输出:2
实现说明
- 用
zip()函数将两个列表对应位置的元素配对,保证每个患者的感染状态与检测结果一一对应 - 生成器表达式结合
sum()函数完成计数:布尔值True在求和时会被当作1,False当作0,无需额外定义计数变量 - 函数适配任意长度为10的布尔列表输入,只要两个列表长度一致即可正常运行
内容的提问来源于stack exchange,提问作者mike3292
相关产品推荐
相关产品推荐

