Existe-t-il un moyen plus simple de concaténer les éléments de chaîne d'une liste en une seule chaîne? Puis-je utiliser la fonction str.join()
?
Par exemple. c'est l'entrée ['this','is','a','sentence']
et c'est la sortie souhaitée this-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
Utilisez join
:
>>> sentence = ['this','is','a','sentence']
>>> '-'.join(sentence)
'this-is-a-sentence'
Une façon plus générique de convertir les listes python en chaînes serait la suivante:
>>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> my_lst_str = ''.join(map(str, my_lst))
>>> print(my_lst_str)
'12345678910'
C'est très utile pour les débutants de savoir pourquoi rejoindre 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 join 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. explication détaillée
Une fois que vous l’apprenez, c’est très confortable et vous pouvez faire des astuces comme celle-ci pour ajouter des parenthèses.
>>> ",".join("12345").join(("(",")"))
'(1,2,3,4,5)'
>>> lista=["(",")"]
>>> ",".join("12345").join(lista)
'(1,2,3,4,5)'
Bien que @ la réponse de Burhan Khalid soit bon, je pense que c'est plus compréhensible comme ceci:
from str import join
sentence = ['this','is','a','sentence']
join(sentence, "-")
Le second argument de join () est optionnel et "" par défaut.
EDIT: Cette fonction a été supprimée dans Python 3
Nous pouvons également utiliser la fonctionnalité intégrée python de reduction: -
de functools importer réduire
sentence = ['this', 'est', 'a', 'sentence']
out_str = str (réduire (lambda x, y: x + "-" + y, phrase))
print (out_str)
J'espère que ça aide :)