filter() 函数的用法

下面通过一个实例来演示 filter() 函数的用法。比如说,定义一个 list 变量,里边放置若干学生的成绩信息(包括语文、数学和英语)。要求使用 filter() 函数筛选出偏科的学生名单。

如何认定学生是否偏科呢?符合如下其中一条的学生,将被视为偏科:
有 2 科成绩在 80 分以上,有一科在 60 分以下。
有 1 科成绩在 90 分以上,另外 2 科成绩都在 60 分以下。
有 1 科成绩在 90 分以上,但三科的平均分在 70 分以下。

scores = [ (“Emma”, 89 , 90 , 59),
(“Edith”, 99 , 49 , 59),
(“Sophia”, 99 , 60 , 20),
(“May”, 40 , 94 , 59),
(“Ashley”, 89 , 90 , 59),
(“Arny”, 89 , 90, 69),
(“Lucy”, 79 , 90 , 59 ),
(“Gloria”, 85 , 90 , 59),
(“Abby”, 89 , 91 , 90)]

def handle_filter(a):
s = sorted(a[1: ]) #对三科成绩进行排序
#有 2 科成绩在 80 分以上,并且有 1 科在 60 分以下的
if s[-2] > 80 and s[0] < 60 :
return True
#有 1 科成绩在 90 分以上,另外 2 科成绩都在 60 分以下
if s[-1] > 90 and s[1] < 60 :
return True
if s[-2] > 80 and sum(s)/len(s) < 60:
#有 1 科成绩在 90 分以上, 且 3 科的平均分在 70 分以下
return True
return False

newIter = list(filter(handle_filter, scores))
print(newIter)

http://c.biancheng.net/view/5774.html

你可能感兴趣的:(python)