Skip to content
Related Articles

Related Articles

Improve Article

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
Recommended Articles
Page :