即将成为c语音大佬 2023-05-02 13:06 采纳率: 47.1%
浏览 71
已结题

有什么办法可以把二维列表里面的每一个人的成绩去掉非法成绩(去掉如“一般”)

img


有什么办法可以把二维列表里面的每一个人的成绩去掉非法成绩(去掉如“一般”)

  • 写回答

5条回答 默认 最新

  • threenewbee 2023-05-02 13:16
    关注
    获得3.45元问题酬金

    你的问题有几种理解的方式,我不确定你要怎么做,所以我都写给你。纯手工写的,所以不能像机器人那样不费力地打字,数据我抄了4组作为示意。你把完整的数据文本贴出来我可以帮你再改。

    一个是单纯把元素删除

    arr = [['2','一般','一般','一般'],['75', '85', '50', '85'], ['77', '70', '70', '80'], ['75', '85', '80', '85']]
    new_arr = [[int(num) for num in inner_arr if num.isdigit()] for inner_arr in arr]
    print(new_arr)
    

    结果是 [[2], [75, 85, 50, 85], [77, 70, 70, 80], [75, 85, 80, 85]]

    一个是把存在非法成绩格式的整个列表都删除

    arr = [['2','一般','一般','一般'],['75', '85', '50', '85'], ['77', '70', '70', '80'], ['75', '85', '80', '85']]
    new_arr = list(filter(lambda inner_arr: all(num.isdigit() for num in inner_arr), arr))
    print(new_arr)
    

    结果是 [['75', '85', '50', '85'], ['77', '70', '70', '80'], ['75', '85', '80', '85']]

    一个是,将这些非法变量,转换为某个特殊值,比如说 '0'

    arr = [['2','一般','一般','一般'],['75', '85', '50', '85'], ['77', '70', '70', '80'], ['75', '85', '80', '85']]
    new_arr = [[int(num) if num.isdigit() else '0' for num in inner_arr] for inner_arr in arr]
    print(new_arr)
    

    结果是 [['2', '0', '0', '0'], [75, 85, 50, 85], [77, 70, 70, 80], [75, 85, 80, 85]]

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月10日
  • 创建了问题 5月2日