在字符串中的每个字符前后放置一个符号

Meh*_*len 2 python string python-2.7

我想为字符串中的每个字符添加括号.所以

"HelloWorld"
Run Code Online (Sandbox Code Playgroud)

应成为:

"[H][e][l][l][o][W][o][r][l][d]"
Run Code Online (Sandbox Code Playgroud)

我用过这段代码:

word = "HelloWorld"
newWord = ""
for letter in word:
    newWord += "[%s]" % letter
Run Code Online (Sandbox Code Playgroud)

这是最简单的方法,但字符串连接非常慢.有关加快此代码的任何建议.

Ash*_*ary 5

>>> s = "HelloWorld"
>>> ''.join('[{}]'.format(x) for x in s)
'[H][e][l][l][o][W][o][r][l][d]'
Run Code Online (Sandbox Code Playgroud)

如果字符串很大,那么使用str.join列表推导将比使用生成器表达式(/sf/answers/634271711/)更快且内存效率更高:

>>> ''.join(['[{}]'.format(x) for x in s])
'[H][e][l][l][o][W][o][r][l][d]'
Run Code Online (Sandbox Code Playgroud)

Python性能提示:

避免这个:

s = ""
for substring in list:
    s += substring
Run Code Online (Sandbox Code Playgroud)

s = "".join(list)改用.在构建大型字符串时,前者是一个非常常见和灾难性的错误.

  • `timeit`,但几乎可以肯定是因为你创建了n个新的字符串对象. (2认同)