Skip to content
Related Articles

Related Articles

Improve Article
Python – Extract elements from Ranges in List
  • Last Updated : 02 Sep, 2020

Given a list, and a list of tuples with ranges, extract all elements in those ranges from list.

Input : test_list = [4, 5, 4, 6, 7, 5, 4, 5, 6, 10], range_list = [(2, 4), (7, 8)]
Output : [4, 6, 7, 5, 6]
Explanation : 4, 6, 7 are elements at idx 2, 3, 4 and 5, 6 at idx 7, 8.

Input : test_list = [4, 5, 4, 6, 7, 5, 4, 5, 6, 10], range_list = [(2, 6)]
Output : [4, 6, 7, 5, 4]
Explanation : Elements from 2-6 index are extracted.

Method #1 : Using loop + list slicing 

In this, we extract each range using list slicing and using loop iterate for each range and keep extending the extracting slices to extending list.



Python3




# Python3 code to demonstrate working of 
# Extract elements from Ranges in List
# Using loop + list slicing 
  
# initializing list
test_list = [4, 5, 4, 6, 7, 5, 4, 5, 4, 6, 4, 6, 9, 8]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing ranges
range_list = [(2, 4), (7, 8), (10, 12)]
  
res = []
for ele in range_list:
      
    # extending ranges
    res.extend(test_list[ele[0] : ele[1] + 1])
  
# printing result 
print("Ranges elements : " + str(res))
Output
The original list is : [4, 5, 4, 6, 7, 5, 4, 5, 4, 6, 4, 6, 9, 8]
Ranges elements : [4, 6, 7, 5, 4, 4, 6, 9]

Method #2  : Using list comprehension

In this, we apply similar method as above function, difference being that list comprehension is used to solve this in compact form.

Python3




# Python3 code to demonstrate working of 
# Extract elements from Ranges in List
# Using list comprehension
from itertools import chain
  
# initializing list
test_list = [4, 5, 4, 6, 7, 5, 4, 5, 4, 6, 4, 6, 9, 8]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing ranges
range_list = [(2, 4), (7, 8), (10, 12)]
  
# using one-liner to solve this problem
res = list(chain.from_iterable([test_list[ele[0] : ele[1] + 1] for ele in range_list]))
  
# printing result 
print("Ranges elements : " + str(res))
Output
The original list is : [4, 5, 4, 6, 7, 5, 4, 5, 4, 6, 4, 6, 9, 8]
Ranges elements : [4, 6, 7, 5, 4, 4, 6, 9]

 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 :