<p>对我来说,最像pythonic*的方法是,下面的<em>几乎做了相同的事情</em>但是使用<code>+</code>运算符连接每个字符串中的单个字符:</p>
<pre><code>res = "".join(i + j for i, j in zip(u, l))
print(res)
# 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'
</code></pre>
<p>它也比使用两个<code>join()</code>调用快:</p>
<pre><code>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
</code></pre>
<p>虽然存在更快的方法,但它们常常会混淆代码。</p>
<p><strong>注意:</strong>如果两个输入字符串的长度不相同,则较长的字符串将被截断,因为在较短字符串的末尾停止迭代。在这种情况下,应该使用来自<a href="https://docs.python.org/3/library/itertools.html">^{<cd7>}</a>模块的<strong><a href="https://docs.python.org/3/library/itertools.html#itertools.zip_longest">^{<cd5>}</a></strong>(Python 2中的<strong><a href="https://docs.python.org/2.7/library/itertools.html#itertools.izip_longest">^{<cd6>}</a></strong>)来确保两个字符串都已完全耗尽。</p>
<hr/>
<p><sub>*引用<strong><em><a href="https://www.python.org/dev/peps/pep-0020/">the Zen of Python</a></em></strong>:<strong>可读性计数。<br/>
Pythonic=<strong>可读性</strong>对我来说;<code>i + j</code>只是视觉上更容易解析,至少对我的眼睛来说是这样。</sub></p>