Existe-t-il un moyen plus simple de concaténer des éléments de chaîne dans une liste en une seule chaîne? Puis-je utiliser la str.join()
fonction?
Par exemple, c'est l'entrée ['this','is','a','sentence']
et c'est la sortie souhaitéethis-is-a-sentence
sentence = ['this','is','a','sentence']
sent_str = ""
for i in sentence:
sent_str += str(i) + "-"
sent_str = sent_str[:-1]
print sent_str
'-'.join(sentence)
Réponses:
Utilisation
join
:la source
sentence.join(" ")
à ce que cela fonctionne aussi, puisque l'opération inverse estlist.split(" ")
. Une idée si cela va être ajouté aux méthodes de Python pour les listes?list.join
serait inappropriée pour une liste arbitraire. De l'autre, l'argument destr.join
peut être n'importe quelle séquence de chaînes "itérable", pas seulement une liste. La seule chose qui aurait du sens est une fonction intégréejoin(list, sep)
; il y en a un dans lestring
module (fondamentalement obsolète) si vous le voulez vraiment.' '.join(['this', 'is', 'a', 'sentence'])
Une façon plus générique de convertir des listes python en chaînes serait:
la source
map(str, my_lst)
serait également suffisant sans énumérer la liste =)int
mais il peut s'agir de n'importe quel type pouvant être représenté sous forme de chaîne.' '.join(map(lambda x: ' $'+ str(x), my_lst))
reviendrait'$1 $2 $3 $4 $5 $6 $7 $8 $9 $10'
Il est très utile pour les débutants de savoir pourquoi join est une méthode de chaîne .
C'est très étrange au début, mais très utile après cela.
Le résultat de la jointure est toujours une chaîne, mais l'objet à joindre peut être de plusieurs types (générateurs, liste, tuples, etc.).
.join
est plus rapide car il n'alloue de la mémoire qu'une seule fois. Mieux que la concaténation classique (voir, explication détaillée ).Une fois que vous l'avez appris, c'est très confortable et vous pouvez faire des tours comme celui-ci pour ajouter des parenthèses.
la source
Bien que la réponse de @Burhan Khalid soit bonne, je pense que c'est plus compréhensible comme ceci:
Le deuxième argument de join () est facultatif et vaut par défaut "".
EDIT: Cette fonction a été supprimée dans Python 3
la source
Nous pouvons spécifier comment nous devons joindre la chaîne. Au lieu de «-», nous pouvons utiliser «»
la source
Nous pouvons également utiliser la fonction de réduction de Python :
la source
join
?la source