
有什么办法可以把二维列表里面的每一个人的成绩去掉非法成绩(去掉如“一般”)
你的问题有几种理解的方式,我不确定你要怎么做,所以我都写给你。纯手工写的,所以不能像机器人那样不费力地打字,数据我抄了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]]