如何用大于运算符筛选大于对应最大分数50%的当前分数元素
问题解决方法
你的代码报错是因为单个整数和整个列表无法直接比较,而且你需要的是两个列表对应位置元素的比较,不是和整个列表对比。另外手动计算半分位容易出错,建议直接在推导式中动态计算。
错误原因
item < max_scr_in_half是拿单个分数和整个半分位列表比较,Python不支持这种运算。- 手动维护
max_scr_in_half容易出现计算错误(比如你代码里15的半分位写了8,实际是7.5)。
正确代码
根据你的预期结果,需求应该是筛选出currnt_scr中**小于对应max_scr元素50%**的值,代码如下:
max_scr = [400, 100, 2, 20, 15, 16] currnt_scr = [375, 46, 1, 10, 4, 6] # 用zip配对两个列表的对应元素,遍历判断条件 new_list = [curr_val for max_val, curr_val in zip(max_scr, currnt_scr) if curr_val < max_val * 0.5] print(new_list) # 输出: [46, 4, 6]
代码说明
zip(max_scr, currnt_scr):将两个列表的元素按顺序一一配对成元组,比如(400, 375)、(100, 46)等。- 遍历每一对元素,判断当前分数
curr_val是否小于对应最大分数max_val的50%,满足条件则将curr_val加入新列表。
如果你的需求确实是筛选大于对应max_scr元素50%的值,只需把判断条件中的<改为>即可:
max_scr = [400, 100, 2, 19, 15, 15] currnt_scr = [375, 46, 1, 10, 4, 6] new_list = [curr_val for max_val, curr_val in zip(max_scr, currnt_scr) if curr_val > max_val * 0.5] print(new_list) # 输出: [375, 10]
内容的提问来源于stack exchange,提问作者Gibbs
相关产品推荐
相关产品推荐

