Python中如何删除列表元素内的指定字符(如成绩项的D/M)
简单实现移除成绩项中的D/M标记
嘿,这个需求很常见,我给你几个简单又实用的实现方案,看你喜欢哪种:
方案1:字符串分割提取分数(最通用)
如果你的成绩项格式是「标记+空格+分数」,用split()方法分割字符串是最稳妥的方式,不管标记和分数之间有多少空格都能处理,还能直接把分数转成整数方便后续计算:
# 假设你已经完成分类的列表 daily_grades = ['D 85', 'D 100', 'D 70'] major_grades = ['M 20'] # 清理日常成绩列表 clean_daily = [int(item.split()[1]) for item in daily_grades] # 清理重要成绩列表 clean_major = [int(item.split()[1]) for item in major_grades] print(clean_daily) # 输出: [85, 100, 70] print(clean_major) # 输出: [20]
方案2:直接替换标记(格式固定时更高效)
如果你能确定所有成绩项都是严格的「D 分数」或「M 分数」格式,直接用replace()把标记和空格替换掉就行,代码更简洁:
clean_daily = [int(item.replace('D ', '')) for item in daily_grades] clean_major = [int(item.replace('M ', '')) for item in major_grades]
方案3:分类时一步到位(更高效的流程)
如果还没完成成绩分类,其实可以在遍历原始列表的时候就同时完成分类+分数提取,省得后续再单独清理,一步到位更高效:
grades = ['D 85', 'D 100', 'M 20', 'D 70'] daily_grades = [] major_grades = [] for item in grades: # 分割标记和分数 prefix, score_str = item.split() score = int(score_str) # 根据标记分类 if prefix == 'D': daily_grades.append(score) elif prefix == 'M': major_grades.append(score) print(daily_grades) # 输出: [85, 100, 70] print(major_grades) # 输出: [20]
这几个方案都很简单,你可以根据自己的实际情况选,比如已经分好类就用前两种,还没分类就用第三种~
内容的提问来源于stack exchange,提问作者Clemens Dotson
相关产品推荐
相关产品推荐

