New list from the elements of two lists popping sequentially
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):]