Два списка списка Python shuffle

У меня есть два списка:

a = [1, 2, 3, 4] b = [5, 6, 7, 8] 

Мне нужно получить что-то вроде этого:

 c = [1, 5, 2, 6, 3, 7, 4, 8] 

Я использую это решение:

 c = list(reduce(lambda x, y: x + y, zip(a, b))) 

Есть лучший способ сделать это?

Использование List List :

 >>> [x for tup in zip(a, b) for x in tup] [1, 5, 2, 6, 3, 7, 4, 8] 

Вышеупомянутое вложенное понимание списка эквивалентно следующему вложенному циклу (на всякий случай, если вы запутались):

 result = [] for tup in zip(a, b): for x in tup: result.append(x) 

Использование chain :

 from itertools import chain, izip interweaved = list(chain.from_iterable(izip(a, b))) # [1, 5, 2, 6, 3, 7, 4, 8] 

Также жизнеспособный:

 list(sum(zip(a, b), ()))