kad*_*ian 81 python string join list
我有:
words = ['hello', 'world', 'you', 'look', 'nice']
Run Code Online (Sandbox Code Playgroud)
我希望有:
'"hello", "world", "you", "look", "nice"'
Run Code Online (Sandbox Code Playgroud)
使用Python最简单的方法是什么?
jam*_*lak 140
>>> words = ['hello', 'world', 'you', 'look', 'nice']
>>> ', '.join('"{0}"'.format(w) for w in words)
'"hello", "world", "you", "look", "nice"'
Run Code Online (Sandbox Code Playgroud)
mar*_*ing 44
你也可以进行一次format通话
>>> words = ['hello', 'world', 'you', 'look', 'nice']
>>> '"{0}"'.format('", "'.join(words))
'"hello", "world", "you", "look", "nice"'
Run Code Online (Sandbox Code Playgroud)
更新:一些基准测试(在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
Run Code Online (Sandbox Code Playgroud)
所以看起来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
Run Code Online (Sandbox Code Playgroud)
小智 28
你可以试试这个:
str(words)[1:-1]
Run Code Online (Sandbox Code Playgroud)
>>> ', '.join(['"%s"' % w for w in words])
Run Code Online (Sandbox Code Playgroud)
@jamylak 答案的更新版本,带有 F 字符串(适用于 python 3.6+),我对用于 SQL 脚本的字符串使用了反引号。
keys = ['foo', 'bar' , 'omg']
', '.join(f'`{k}`' for k in keys)
# result: '`foo`, `bar`, `omg`'
Run Code Online (Sandbox Code Playgroud)