pythonlist

Interleave multiple lists of the same length in Python


In Python, is there a good way to interleave two lists of the same length?

Say I'm given [1,2,3] and [10,20,30]. I'd like to transform those into [1,10,2,20,3,30].


Solution

  • Having posted the question, I've realised that I can simply do the following:

    [val for pair in zip(l1, l2) for val in pair]
    

    where l1 and l2 are the two lists.


    If there are N lists to interleave, then

    lists = [l1, l2, ...]
    [val for tup in zip(*lists) for val in tup]