J'ai:
words = ['hello', 'world', 'you', 'look', 'nice']
Je veux avoir:
'"hello", "world", "you", "look", "nice"'
Quel est le moyen le plus simple de le faire avec Python?
J'ai:
words = ['hello', 'world', 'you', 'look', 'nice']
Je veux avoir:
'"hello", "world", "you", "look", "nice"'
Quel est le moyen le plus simple de le faire avec Python?
Mise à jour 2021: Avec les f strings en Python3
>>> words = ['hello', 'world', 'you', 'look', 'nice']
>>> ', '.join(f'"{w}"' for w in words)
'"hello", "world", "you", "look", "nice"'
Réponse originale (Prise en charge de Python 2.6+)
>>> words = ['hello', 'world', 'you', 'look', 'nice']
>>> ', '.join('"{0}"'.format(w) for w in words)
'"hello", "world", "you", "look", "nice"'
Vous pouvez également effectuer un seul appel format
>>> mots = ['bonjour', 'monde', 'tu', 'as', 'l\'air']
>>> '"{0}"'.format('", "'.join(mots))
'"bonjour", "monde", "tu", "as", "l\'air"'
Mise à jour: quelques tests de performance (effectués sur un mbp de 2009):
>>> timeit.Timer("""mots = ['bonjour', 'monde', 'tu', 'as', 'l\'air'] * 100; ', '.join('"{0}"'.format(w) for w in mots)""").timeit(1000)
0.32559704780578613
>>> timeit.Timer("""mots = ['bonjour', 'monde', 'tu', 'as', 'l\'air'] * 100; '"{}"'.format('", "'.join(mots))""").timeit(1000)
0.018904924392700195
Il semble donc que format
soit en fait assez coûteux
Mise à jour 2: suite au commentaire de @JCode, ajout d'un map
pour s'assurer que join
fonctionnera, Python 2.7.12
>>> timeit.Timer("""mots = ['bonjour', 'monde', 'tu', 'as', 'l\'air'] * 100; ', '.join('"{0}"'.format(w) for w in mots)""").timeit(1000)
0.08646488189697266
>>> timeit.Timer("""mots = ['bonjour', 'monde', 'tu', 'as', 'l\'air'] * 100; '"{}"'.format('", "'.join(map(str, mots)))""").timeit(1000)
0.04855608940124512
>>> timeit.Timer("""mots = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] * 100; ', '.join('"{0}"'.format(w) for w in mots)""").timeit(1000)
0.17348504066467285
>>> timeit.Timer("""mots = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] * 100; '"{}"'.format('", "'.join(map(str, mots)))""").timeit(1000)
0.06372308731079102
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.