Je dois joindre une liste d'articles. De nombreux éléments de la liste sont des valeurs entières renvoyées par une fonction; c'est à dire,
myList.append(munfunc())
Comment dois-je convertir le résultat retourné en une chaîne afin de le joindre à la liste?
Dois-je faire ce qui suit pour chaque valeur entière:
myList.append(str(myfunc()))
Existe-t-il un moyen plus Pythonique pour résoudre les problèmes de casting?
Réponses:
L'appel
str(...)
est la façon Pythonique de convertir quelque chose en chaîne.Vous voudrez peut-être vous demander pourquoi vous voulez une liste de chaînes. Vous pouvez à la place le conserver sous forme de liste d'entiers et convertir uniquement les entiers en chaînes lorsque vous devez les afficher. Par exemple, si vous avez une liste d'entiers, vous pouvez les convertir un par un dans une boucle for et les joindre avec
,
:la source
Il n'y a rien de mal à passer des entiers à str. Une des raisons pour lesquelles vous pourriez ne pas le faire est que myList est vraiment censé être une liste d'entiers, par exemple, il serait raisonnable de additionner les valeurs dans la liste. Dans ce cas, ne transmettez pas vos entrées à str avant de les ajouter à myList. Si vous finissez par ne pas convertir en chaînes avant d'ajouter, vous pouvez construire une grande chaîne en faisant quelque chose comme
la source
str
? Veuillez considérer la possibilité que vous ayez besoin d'ajouter de la logique floue à votre analyseur ;-)la fonction de carte en python peut être utilisée. Cela prend deux arguments. Le premier argument est la fonction qui doit être utilisée pour chaque élément de la liste. Le deuxième argument est l' itérable .
Après avoir converti la liste en chaîne, vous pouvez utiliser la fonction de jointure simple pour combiner la liste en une seule chaîne
la source
La méthode ci-dessus est le moyen le plus simple et le plus général de convertir une liste en chaîne. une autre méthode courte est-
la source
Il y a trois façons de procéder.
disons que vous avez une liste de points
"-".join(str(n) for n in my_list)
"-".join([str(n) for n in my_list])
"-".join(map(str, my_list))
Cependant, comme indiqué dans l'exemple de timeit sur le site Web python à https://docs.python.org/2/library/timeit.html, l' utilisation d'une carte est plus rapide. Je vous recommande donc d'utiliser
"-".join(map(str, my_list))
la source
Votre problème est plutôt clair. Vous cherchez peut-être à étendre, pour ajouter tous les éléments d'une autre liste à une liste existante:
Si vous voulez convertir des entiers en chaînes, utilisez str () ou une interpolation de chaîne, éventuellement combinée avec une compréhension de liste, c.-à-d.
Tout cela est considéré comme pythonique (ok, une expression de générateur est encore plus pythonique mais restons simples et sur le sujet)
la source
Par exemple:
Quant à moi, je veux ajouter un
str
avant chaque liste de str:Ou liste unique:
la source
Peut-être que vous n'avez pas besoin de nombres comme chaînes, faites simplement:
Plus tard, si vous en avez besoin en tant que chaîne, vous pouvez le faire avec une chaîne ou avec une chaîne de format:
print "Vastaus5 = %s" % functaulu[5]
la source
Pourquoi personne ne semble aimer
repr
?python 3.7.2:
Attention cependant, c'est une représentation explicite. Un exemple montre:
plus d'informations sur pydocs-repr
la source