Related Articles

# Python – Interleave two lists of different length

• Last Updated : 16 May, 2021

Given two lists of different lengths, the task is to write a Python program to get their elements alternatively and repeat the list elements of the smaller list till the larger list elements get exhausted.

Examples:

Input : test_list1 = [‘a’, ‘b’, ‘c’], test_list2 = [5, 7, 3, 0, 1, 8, 4]

Output : [‘a’, 5, ‘b’, 7, ‘c’, 3, ‘a’, 0, ‘b’, 1, ‘c’, 8, ‘a’, 4]

Explanation : Alternate elements from 1st list are printed in cyclic manner once it gets exhausted. Then after exhaustion, again 1st list starts from ‘a’, with elements left in 2nd list.

Input : test_list1 = [3, 8, 7], test_list2 = [5, 7, 3, 0, 1, 8]

Output : [3, 5, 8, 7, 7, 3, 3, 0, 8, 1, 7, 8]

Explanation : Alternate elements from 1st list are printed in cyclic manner once it gets exhausted. 3, 5, 8, 7, 7, 3.. Then after exhaustion, again 1st list starts from 3, with elements left in 2nd list

Method #1 : Using zip() + cycle() + list comprehension

In this, repetition of elements in smaller list is handled using cycle(), joining is done using zip(). List comprehension performs task of interleaving simultaneously.

## Python3

 `# Python3 code to demonstrate working of``# Repetitive Interleave 2 lists``# Using zip() + cycle() + list comprehension ``from` `itertools ``import` `cycle`` ` `# initializing lists``test_list1 ``=` `list``(``'abc'``)``test_list2 ``=` `[``5``, ``7``, ``3``, ``0``, ``1``, ``8``, ``4``]`` ` `# printing original lists``print``(``"The original list 1 is : "` `+` `str``(test_list1))``print``(``"The original list 2 is : "` `+` `str``(test_list2))`` ` `# zip() combining list, after Repetitiveness using cycle()``res ``=` `[ele ``for` `comb ``in` `zip``(cycle(test_list1), test_list2) ``for` `ele ``in` `comb]`` ` `# printing result``print``(``"The interleaved list : "` `+` `str``(res))`

Output:

The original list 1 is : [‘a’, ‘b’, ‘c’]

The original list 2 is : [5, 7, 3, 0, 1, 8, 4]

The interleaved list : [‘a’, 5, ‘b’, 7, ‘c’, 3, ‘a’, 0, ‘b’, 1, ‘c’, 8, ‘a’, 4]

Method #2 : Using chain() + zip() + cycle()

Most operations as above method, only difference being interleaving task is perform using chain().

## Python3

 `# Python3 code to demonstrate working of``# Repetitive Interleave 2 lists``# Using chain() + zip() + cycle()``from` `itertools ``import` `cycle, chain`` ` `# initializing lists``test_list1 ``=` `list``(``'abc'``)``test_list2 ``=` `[``5``, ``7``, ``3``, ``0``, ``1``, ``8``, ``4``]`` ` `# printing original lists``print``(``"The original list 1 is : "` `+` `str``(test_list1))``print``(``"The original list 2 is : "` `+` `str``(test_list2))`` ` `# zip() combining list, after Repetitiveness using cycle()``# chain() gets interleaved done``res ``=` `list``(chain(``*``zip``(cycle(test_list1), test_list2)))`` ` `# printing result``print``(``"The interleaved list : "` `+` `str``(res))`

Output:

The original list 1 is : [‘a’, ‘b’, ‘c’]

The original list 2 is : [5, 7, 3, 0, 1, 8, 4]

The interleaved list : [‘a’, 5, ‘b’, 7, ‘c’, 3, ‘a’, 0, ‘b’, 1, ‘c’, 8, ‘a’, 4]

Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course

My Personal Notes arrow_drop_up