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
更快的选择
另一种方式:
输出:
速度
看起来更快:
比目前最快的解决方案:
对于较大的字符串:
Python3.5.1。
不同长度字符串的变化
较短者决定长度(
zip()
等效值)输出:
较长的一个决定长度(
itertools.zip_longest(fillvalue='')
等效值)输出:
对我来说,最像pythonic*的方法是,下面的几乎做了相同的事情但是使用
+
运算符连接每个字符串中的单个字符:它也比使用两个
join()
调用快:虽然存在更快的方法,但它们常常会混淆代码。
注意:如果两个输入字符串的长度不相同,则较长的字符串将被截断,因为在较短字符串的末尾停止迭代。在这种情况下,应该使用来自^{} 模块的^{} (Python 2中的^{} )来确保两个字符串都已完全耗尽。
*引用the Zen of Python:可读性计数。
Pythonic=可读性对我来说;
i + j
只是视觉上更容易解析,至少对我的眼睛来说是这样。用
join()
和zip()
。相关问题 更多 >
编程相关推荐