web-dev-qa-db-fra.com

Concaténer un élément de la liste en chaînes

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
436
alvas

Utilisez join :

>>> sentence = ['this','is','a','sentence']
>>> '-'.join(sentence)
'this-is-a-sentence'
830
Burhan Khalid

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'
103
6pack kid

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)'
33
Wallebot

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

12
SilentVoid

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

1
Nishkarsh Dixit