141

私が持っている:

words = ['hello', 'world', 'you', 'look', 'nice']

私が欲しい:

'"hello", "world", "you", "look", "nice"'

Pythonでこれを行う最も簡単な方法は何ですか?

4

6 に答える 6

244

アップデート2021:Python3のf文字列を使用

>>> words = ['hello', 'world', 'you', 'look', 'nice']
>>> ', '.join(f'"{w}"' for w in words)
'"hello", "world", "you", "look", "nice"'

元の回答(Python 2.6以降をサポート)

>>> words = ['hello', 'world', 'you', 'look', 'nice']
>>> ', '.join('"{0}"'.format(w) for w in words)
'"hello", "world", "you", "look", "nice"'
于 2012-08-17T14:28:10.460 に答える
64

これを試すことができます:

str(words)[1:-1]
于 2016-08-16T21:55:29.443 に答える
54

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 のコメントに続いて、Python 2.7.12 が機能mapすることを確認するためにa を追加します。join

>>> 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
于 2012-08-17T14:50:13.377 に答える
7
>>> ', '.join(['"%s"' % w for w in words])
于 2012-08-17T14:30:42.427 に答える
4

F文字列を使用した@jamylak回答の更新バージョン(python 3.6+用)。SQLスクリプトに使用される文字列にバックティックを使用しました。

keys = ['foo', 'bar' , 'omg']
', '.join(f'`{k}`' for k in keys)
# result: '`foo`, `bar`, `omg`'
于 2019-11-22T23:01:50.210 に答える