Присоедините список строк в python и оберните каждую строку в кавычки У меня есть: words = ['hello', 'world', 'you', 'look', 'nice'] Я хочу иметь: '"hello", "world", "you", "look", "nice"' Какой самый простой способ сделать это с помощью Python? Ответ 1 >>> words = ['hello', 'world', 'you', 'look', 'nice'] >>> ', '.join('"{0}"'.format(w) for w in words) '"hello", "world", "you", "look", "nice"' Ответ 2 вы также можете выполнить один вызов format >>> words = ['hello', 'world', 'you', 'look', 'nice'] >>> '"{0}"'.format('", "'.join(words)) '"hello", "world", "you", "look", "nice"' Обновление: некоторый бенчмаркинг (выполняется на 2009 mbp): >>> 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 Итак, кажется, что format на самом деле довольно дорого Обновление 2: после комментария @JCode, добавив map, чтобы гарантировать, что join будет работать, 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 Ответ 3 Вы можете попробовать следующее: str(words)[1:-1] Ответ 4 >>> ', '.join(['"%s"' % w for w in words])
Ответ 1 >>> words = ['hello', 'world', 'you', 'look', 'nice'] >>> ', '.join('"{0}"'.format(w) for w in words) '"hello", "world", "you", "look", "nice"'
Ответ 2 вы также можете выполнить один вызов format >>> words = ['hello', 'world', 'you', 'look', 'nice'] >>> '"{0}"'.format('", "'.join(words)) '"hello", "world", "you", "look", "nice"' Обновление: некоторый бенчмаркинг (выполняется на 2009 mbp): >>> 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 Итак, кажется, что format на самом деле довольно дорого Обновление 2: после комментария @JCode, добавив map, чтобы гарантировать, что join будет работать, 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