<p><strong>基本方法:</strong></p>
<p>您可以<code>zip()</code>正常情况下,如果两个列表的大小不同,则可以附加最大列表的其余部分:</p>
<pre><code>def two_lists(lst1, lst2):
result = []
for pair in zip(lst1, lst2):
result.extend(pair)
if len(lst1) != len(lst2):
lsts = [lst1, lst2]
smallest = min(lsts, key = len)
biggest = max(lsts, key = len)
rest = biggest[len(smallest):]
result.extend(rest)
return result
</code></pre>
<p>其工作原理如下:</p>
^{pr2}$
<p><strong>另一种可能的方法:</strong></p>
<p>您还可以使用<a href="https://docs.python.org/3.6/library/collections.html#collections.deque" rel="nofollow noreferrer">^{<cd2>}</a>事先将列表转换为<code>deque()</code>对象,并用<code>popleft()</code>弹出每个列表的开头,直到其中一个对象为空。你还不能把剩下的列表加起来。在</p>
<p>下面是一个例子:</p>
<pre><code>def two_lists2(lst1, lst2):
result = []
fst, snd = deque(lst1), deque(lst2)
while fst and snd:
result.append(fst.popleft())
result.append(snd.popleft())
rest = leftover(fst, snd)
if rest:
result.extend(rest)
return result
def leftover(x, y):
if x and not y:
return x
elif y and not x:
return y
return None
</code></pre>
<p><strong>注意:</strong>这两种方法都是<code>O(n)</code>时间,这是此类问题的预期时间。在</p>