J'essaie d'utiliser la fonction map () et de capitaliser tous les mots de la liste.
['S', 'B', 'T', 'C']
4 Réponses :
En fait, vous n'avez même pas besoin ou encore mieux, utilisez une compréhension de la liste à la place: p> retour code> renvoie la valeur et quitte la fonction em>. Normalement, vous voudriez utiliser
Rendement code>
pour renvoyer plusieurs valeurs, mais vous n'avez pas besoin de Une boucle du tout: capitalisant code> car il est juste un wrapper sur
str.upper code>: < / p>
Le rôle de La manière dont il est fourni dans l'OP, Comme d'autres l'ont suggéré, il existe des moyens plus simples / plus propres pour y parvenir, mais si vous essayez de comprendre comment mappe code> est de prendre soin du bit de séquence itération-sur-entrée pour vous, de sorte que la fonction que vous fournissez à
carte code> devrait être défini de manière à ce qu'il faut dans un seul élément fort> de la séquence comme argument. p>
mappe code> prend chaque élément de la liste d'origine (c'est-à-dire un nom d'origine) et s'applique
capitalisant code> à chacun à son tour. Cependant, la fonction boucle à l'intérieur de son argumentation (qui, dans ce cas, sont les caractères de la chaîne de nom) et renvoie la majuscule du premier caractère dans chaque nom. (Pouvez-vous voir pourquoi?) P>
cartographique code> fonctionne, supprimez le
pour code> boucle et simplement revenir
A.PPER () CODE>. P>
Un moyen plus facile de comprendre la carte,
Je déteste la liste (carte (Lambda)) . Utilisez une liste de compréhension de liste à la place: Imprimer ([S.UPPER () pour S dans My_Pets]) Code>. Beaucoup plus court et plus propre, non?
Il y a une différence dans la complexité du temps. Lire ce https://leadsift.com/loop-map-list-compéhension/
Cette page dit une liste de liste est plus rapide qu'une carte à l'exception de "Résultat requis O (n)", où la différence est marginale. De plus, ces résultats semblent être pour Python 2. Je ne sais pas si les choses ont changé dans Python 3, mais la distribution supplémentaire à la liste code> pourrait ajouter des frais généraux.
La construction de l'objet code> mappe code> peut également nécessiter des frais généraux.
Trouvez cette méthode "(λx.x) liste" très proche de la méthode de la carte.
Votre placement de retour à l'intérieur de la boucle de la boucle, le fait revenir après la première itération (sur le premier caractère de la chaîne passée à la capitalisation). Par exemple:
Capitalizing ('SISI') CODE>
my_pets = ['sisi', 'bibi', 'titi', 'carla']
def capitalizing(a):
b = ""
for item in a:
b += item.upper()
# using return here will exit the function immediately after the first iteration
return b # return after finishing
print(list(map(capitalizing, my_pets)))
@ Rodyy9 J'ai corrigé votre format de code, pouvez-vous confirmer que c'est la même empreinte que vous avez?
Vous n'avez pas besoin d'utiliser la boucle si vous utilisez
mappe () code>
La carte est déjà itération sur chaque élément avant de le donner (l'élément de cordes) à capitaliser. Pour l'article dans A: est itération sur les caractères de la chaîne. Retour B Renvoie le premier caractère immédiatement à la première itération, sortant de la fonction après une itération
impression (liste (carte (str.upper, my_pets))) code>
Vous pouvez utiliser une compréhension de liste,
[x.upper () pour X dans ['SISI', 'BIBI', 'TITI', 'CARLA']] code>