You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:34:13