Skip to content
Related Articles

Related Articles

Improve Article

Generate a list using given frequency list

  • Last Updated : 01 May, 2019

Given a list, the task is to generate another list containing numbers from 0 to n, from given list whose each element is frequency of numbers in the generated list.

Input: freq = [1, 4, 3, 5]
Output: [0, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3]

Explanation:
Number = 0
Input[0] = 1 Output = [0]

Number =1
Input[1] = 4 Output = [0, 1, 1, 1, 1] (repeats 1 four times)

Number =2
Input[2] = 3  Output = [0, 1, 1, 1, 1, 2, 2, 2] (repeats 2 three times)

Number =3
Input[3] = 5  Output = [0, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3] (repeats 3 five times)

Below are some ways to achieve above task.

 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

Method #1 : Using Iteration






# Python code to generate list containing numbers from 0 to 'n'
# having frequency of no from another list
  
# List initialisation
Input = [1, 4, 3, 5]
Output = []
  
# Number initialisation
no = 0
  
# using iteration
for rep in Input:
    for elem in range(rep):
        Output.append(no)
    no += 1
  
# printing output
print(Output) 
Output:
[0, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3]

 
Method #2 : Using enumerate and list comprehension




# Python code to generate list containing numbers from 0 to 'n'
# having frequency of no from another list
  
# List initialisation
Input = [1, 4, 3, 5]
  
# Using enumerate and list comprehension
Output = [no for no, rep in enumerate(Input)
                     for elem in range(rep)]
  
# Printing output
print(Output) 
Output:
[0, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3]

 
Method #3 : Using enumerate and chain




# Python code to generate list containing numbers from 0 to 'n'
# having frequency of no from another list
  
# List initialisation
Input = [1, 4, 3, 5]
  
# Importing
from itertools import repeat, chain
  
# Using chain and enumerate
Output = list(chain.from_iterable((repeat(x, y))
                  for x, y in enumerate(Input)))
  
# Printing output
print(Output) 
Output:
[0, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3]



My Personal Notes arrow_drop_up
Recommended Articles
Page :