将数字转换成python列表中的成绩

我有一个名单,具有学生的学生数量。

s = [50,62,15,76,57,97,82,99,45,23]

我想根据标记对学生进行评分:

<40 - Fail
>50 - A Grade
>75 - A++ Grade

我可以通过迭代循环来做到这一点,或者我可以使用lambda找到每个列表。
例如 :

>>> filter(lambda x:x>=50, s)
[50, 62, 76, 57, 97, 82, 99]

但是,在过滤器中,我一次只能使用一个功能(例如:标记大于50)。有什么方法可以使用过滤器和lambda,并在一行中获得所需的结果?期望输出为成绩的标记。 (例如:50 – A,62 – A,76 – A …)

定义一个获取标记并返回可读表示的函数,可以使用larsmans’s expression或者这个:

def grade(i):
    if i<40: return "Fail"
    if i>75: return "A++"
    if i>50: return "A"

使用string.format格式化每个条目并映射以遍历所有条目:

li = map(lambda x: "{0} - {1}".format(x, grade(x)), s)

结果列表现在包含所需格式的字符串。

for i in li: print i

# output

50 - None
62 - A
15 - Fail
76 - A++
57 - A
97 - A++
82 - A++
99 - A++
45 - None
23 - Fail
翻译自:https://stackoverflow.com/questions/9717908/convert-numbers-to-grades-in-python-list

转载注明原文:将数字转换成python列表中的成绩