J'ai:
words = ['hello', 'world', 'you', 'look', 'Nice']
Je veux avoir:
'"hello", "world", "you", "look", "Nice"'
Quel est le moyen le plus simple de faire cela avec Python?
>>> 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
>>> words = ['hello', 'world', 'you', 'look', 'Nice']
>>> '"{0}"'.format('", "'.join(words))
'"hello", "world", "you", "look", "Nice"'
Mise à jour: Quelques analyses comparatives (effectuées sur un mpb de 2009):
>>> timeit.Timer("""words = ['hello', 'world', 'you', 'look', 'Nice'] * 100; ', '.join('"{0}"'.format(w) for w in words)""").timeit(1000)
0.32559704780578613
>>> timeit.Timer("""words = ['hello', 'world', 'you', 'look', 'Nice'] * 100; '"{}"'.format('", "'.join(words))""").timeit(1000)
0.018904924392700195
Donc, il semble que format
soit en fait assez cher
Mise à jour 2: après le commentaire de @ JCode, ajout d'un map
pour s'assurer que join
fonctionnera, Python 2.7.12
>>> timeit.Timer("""words = ['hello', 'world', 'you', 'look', 'Nice'] * 100; ', '.join('"{0}"'.format(w) for w in words)""").timeit(1000)
0.08646488189697266
>>> timeit.Timer("""words = ['hello', 'world', 'you', 'look', 'Nice'] * 100; '"{}"'.format('", "'.join(map(str, words)))""").timeit(1000)
0.04855608940124512
>>> timeit.Timer("""words = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] * 100; ', '.join('"{0}"'.format(w) for w in words)""").timeit(1000)
0.17348504066467285
>>> timeit.Timer("""words = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] * 100; '"{}"'.format('", "'.join(map(str, words)))""").timeit(1000)
0.06372308731079102
Vous pouvez essayer ceci:
str(words)[1:-1]
>>> ', '.join(['"%s"' % w for w in words])