大多数pythonic方式来交织两个字符串

问题:

什么是最多的pythonic方式将两个字符串组合在一起?
例如:
输入:

u = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
l = 'abcdefghijklmnopqrstuvwxyz'

输出:

'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'

回答:

对于我来说,最为pythonic *的方式是pretty much does the same thing,但是使用+运算符连接每个字符串中的各个字符:

res = "".join(i + j for i, j in zip(u, l))
print(res)
# 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'

它也比使用两个join()调用更快:

In [5]: l1 = 'A' * 1000000; l2 = 'a' * 1000000

In [6]: %timeit "".join("".join(item) for item in zip(l1, l2))
1 loops, best of 3: 442 ms per loop

In [7]: %timeit "".join(i + j for i, j in zip(l1, l2))
1 loops, best of 3: 360 ms per loop

存在更快的方法,但它们经常会混淆代码。
 注意:如果两个输入字符串是not相同的长度,那么较长的一个输入字符串将被截断,因为在较短的字符串的末尾停止迭代。在这种情况下,zip应该使用itertools模块中的在Python 2中)来确保两个字符串完全耗尽。
 *To take a quote from the Zen of Python: Readability counts.
Pythonic = readability for me; i + j is just visually parsed more easily, at least for my eyes.

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Most pythonic way to interleave two strings

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 7 = 3