擅长:python、mysql、java
<p>这将使用<code>zip_longest</code>from<a href="https://docs.python.org/3/library/itertools.html" rel="nofollow noreferrer">itertools</a>(这是标准库的一部分)来组合一个列表理解,将两个列表中的项交叉放入一个<code>tuple</code>,默认情况下使用<code>None</code>作为填充值。在</p>
<p>这还使用<code>chain</code>也来自<code>itertools</code>来展开列表。在</p>
<p>最后,它从列表中过滤<code>None</code>项:</p>
<pre><code>from itertools import chain, zip_longest
def twolists(l1, l2):
return [x for x in chain(*zip_longest(l1, l2)) if x is not None]
</code></pre>
<p>或者按照@EliKorvigo的建议,使用<code>itertools.chain.from_iterable</code>进行延迟迭代:</p>
^{pr2}$
测试
<pre><code>In [56]: twolists([0, 1], ['w', 'x'])
Out[56]: [0, 'w', 1, 'x']
In [57]: twolists([0, 1], ['w', 'x', 'y', 'z'])
Out[57]: [0, 'w', 1, 'x', 'y', 'z']
In [74]: twolists([0, 1, 2, 3], ['w', 'x'])
Out[74]: [0, 'w', 1, 'x', 2, 3]
</code></pre>