-2
votes

itération avec carte ()

J'essaie d'utiliser la fonction map () et de capitaliser tous les mots de la liste.

['S', 'B', 'T', 'C']


5 commentaires

@ 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 ()


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)))


Vous pouvez utiliser une compréhension de liste, [x.upper () pour X dans ['SISI', 'BIBI', 'TITI', 'CARLA']]


4 Réponses :


0
votes

retour renvoie la valeur et quitte la fonction . Normalement, vous voudriez utiliser Rendement pour renvoyer plusieurs valeurs, mais vous n'avez pas besoin de Une boucle du tout: xxx

En fait, vous n'avez même pas besoin capitalisant car il est juste un wrapper sur str.upper : < / p> xxx

ou encore mieux, utilisez une compréhension de la liste à la place: xxx


0 commentaires

1
votes

Le rôle de mappe 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 devrait être défini de manière à ce qu'il faut dans un seul élément de la séquence comme argument.

La manière dont il est fourni dans l'OP, mappe prend chaque élément de la liste d'origine (c'est-à-dire un nom d'origine) et s'applique capitalisant à 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?)

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 cartographique fonctionne, supprimez le pour boucle et simplement revenir A.PPER () .


0 commentaires

0
votes

Un moyen plus facile de comprendre la carte, xxx


5 commentaires

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]) . 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 pourrait ajouter des frais généraux.


La construction de l'objet mappe 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.



0
votes

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)))


0 commentaires