Convertir les nombres en grades dans la liste python
J'ai une liste qui a le nombre de points que les étudiants ont.
s = [50,62,15,76,57,97,82,99,45,23]
Je veux de la classe des étudiants selon les marques:
<40 - Fail
>50 - A Grade
>75 - A++ Grade
Je peux le faire avec une itération de la boucle ou je peux trouver toutes les listes à l'aide de lambda.
par exemple :
>>> filter(lambda x:x>=50, s)
[50, 62, 76, 57, 97, 82, 99]
Mais, dans le filtre, je peux travailler avec une seule fonction à la fois (par exemple : les marques plus de 50). Est-il moyen où je peux utiliser le filtre et lambda et obtenir de résultat requis en une seule ligne? Attend la sortie en tant que marques de qualité. (ex : 50 - Un, De 62 A, 76 - A++ ...)
InformationsquelleAutor sam | 2012-03-15
Vous devez vous connecter pour publier un commentaire.
Définir une fonction qui prend une marque et renvoie un lisible par l'homme de la représentation, vous pouvez utiliser larsmans de l'expression ou celui-ci:
Utiliser des chaînes de caractères.le format de chaque entrée et à la carte pour effectuer une itération sur tous:
La liste contient maintenant des chaînes de caractères dans le format souhaité.
Oublier
lambda
, oublierfilter
; suivant le classement dans l'une expression, en supposant il y a une note de B entre A et "échec".Vous pouvez
zip
le résultat de ce avecs
de marques et de qualités dans une seule liste.map(lambda x: (x, 'F' if x<40 else 'A++' if x>70 else 'A'), s)
. Ou tout simplement de perdre la(x,
(et)
bien sûr) si vous voulez juste des notes. La liste est ordonnée de sorte que vous pouvez le faire correspondre plus tard.else
.Utilisation
x.items()
à ne filtre, par exemplele résultat est
x
nom est quelque chose de différent. Pas très différent des autres réponse, donc si vous avez eu le modifier privilège, une édition aurait été un meilleur choix que de répondre.Vous pouvez écrire votre propre filtre-comme la fonction:
La réponse est maintenant à la recherche de la manière suivante: