Python – Interleave two lists of different length

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 liststest_list1 = list('abc')test_list2 = [5, 7, 3, 0, 1, 8, 4]  # printing original listsprint("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 resultprint("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 liststest_list1 = list('abc')test_list2 = [5, 7, 3, 0, 1, 8, 4]  # printing original listsprint("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 doneres = list(chain(*zip(cycle(test_list1), test_list2)))  # printing resultprint("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]
Python list-programs
Python
Python Programs
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
How to Install PIP on Windows ?
Python Classes and Objects
Python OOPs Concepts
Introduction To PYTHON
Python | os.path.join() method
Defaultdict in Python
Python | Get dictionary keys as a list
Python | Convert a list to dictionary
Python | Convert string dictionary to dictionary
Python Program for Fibonacci numbers