map函数有什么用处 ---------------------- map函数对可迭代对象的每一项数据调用函数,它的原型为:: map(func, *iterables) --> map object func函数可以有多个参数,这就需要多个可迭代对象,两者个数要相同。在最少的 可迭代对象迭代完成时,迭代结束。 例如我们现在都要素质教育,我们不能给学生进行真正的分数,只能给学生评等级,比如 A, B, C,D,及A+,A-等等,假定我们考试成绩还是百分值,我们就需要一个换算函数, 对成绩进行换算。然后对学生成绩调用map函数:: def fn(score): if(score>=98): return "A+" elif(score>=92): return "A" elif(score>=90): return "A-" elif(score>=85): return "B+" elif(score>=80): return "B" elif(score>=75): return "B-" elif(score>=70): return "C+" elif(score>=65): return "C" elif(score>=60): return "C-" elif(score<=60): return "D" s = map(fn, [100, 20,90, 80]) print(list(s)) #['A+', 'D', 'A-', 'B'] 最后将每一个成绩按顺序转换为等级成绩。 可能素质教育来进行成绩转换的必要性并不大,但家里有小学生的,会碰到跳绳成绩计算, 跳绳为1分钟所跳次数来计算,一年级小朋友跳109个就是单项满分,17个为及格。具体成绩 计算方法见教育部网站链接。 如果我是学校小学老师,我要对每一个学生的成绩进行转换,这是map函数就派上了用场。 :: #男生跳绳单向得分 boy = (100, 95,90, 85, 80,78,76,74,72,70,68,66,64,62,60,50,40,30,20,10) #男生跳绳一分钟次数 grade1 = (109,104,99, 93, 87,80,73,66,59,52,45,38,31,24,17,14,11, 8, 5, 2) grade2 = (117,112,107,101,95,88,81,74,67,60,53,46,39,32,25,22,19,16,13,10) def rope(score): """小学一年级一分钟跳绳分数转换""" for i, value in enumerate(grade1): if(score>value): return boy[i] s = map(rope, [140, 62,90, 10]) print(list(s)) s = map(rope, [140, 62,90, 10]) #[100, 72, 80, 30] 实际的单项成绩 教育部网站-国家学生体质健康标准 http://old.moe.gov.cn/publicfiles/business/htmlfiles/moe/s3273/201407/171692.html