New list from the elements of two lists popping sequentially Can this be shortened, optimised or made more pythonic ?

a = [1,9,'foo',5,7]    
b = ['bar',4,8,6]    
c = []

min_len = min(len(a),len(b))

for i in range(min_len):
  c.extend([a.pop(0), b.pop(0)])

c.extend(a)
c.extend(b)

print c


output: [1, 'bar', 9, 4, 'foo', 8, 5, 6, 7]
There are a few possibilities...

from itertools import chain, izip_longest
def alternate(a, b):
    for i in range(max(len(a), len(b))):
        if i &lt; len(a):
            yield a[i]
        if i &lt; len(b):
            yield b[i]

def alternate2(list_a, list_b):
    unfound = {}
    for a, b in izip_longest(list_a, list_b, fill=unfound):
        if a is not unfound:
            yield a
        if b is not unfound:
            yield b

a = [1,9,'foo',5,7]    
b = ['bar',4,8,6] 
print list(alternate(a, b))
print list(alternate2(a, b))
print list(chain.from_iterable(zip(a, b))) + a[len(b):] + b[len(a):]