Python如何删除分数分组函数返回结果中的空tuple元组
分数分组空等级剔除解决方案
出现空C等级条目的原因是71~80分数区间没有匹配的分数,生成了空元组(),未经过滤直接被打包进返回结果。只需在返回前新增过滤逻辑,剔除分数元组为空的条目即可,修改后完整代码如下:
def convert(list1): A = tuple(filter(lambda x:100>=x>=91 ,list1)) B = tuple(filter(lambda x:81<=x<=90 ,list1)) C = tuple(filter(lambda x:71<=x<=80 ,list1)) D = tuple(filter(lambda x:56<=x<=70 ,list1)) E = tuple(filter(lambda x:0<=x<=56 ,list1)) x = zip(['A:', 'B:','C', 'D:', 'Fail:'], ([A], [B],[C], [D], [E])) # 过滤掉分数元组为空的分组 filtered_res = filter(lambda item: len(item[1][0]) > 0, x) return tuple(filtered_res) lst = (20, 45, 90, 3, 68, -30, 81, 98, 104, 63, 61) print(convert(lst))
运行上述代码输出结果如下,完全符合预期:(('A:', [(98,)]), ('B:', [(90, 81)]), ('D:', [(68, 63, 61)]), ('Fail:', [(20, 45, 3)]))
如果后续需要调整判定逻辑,只需修改filter中的判断条件即可。
内容的提问来源于stack exchange,提问作者יובל דרעי
相关产品推荐
相关产品推荐

