Given a list and an integer N, write a Python program to increase the size of the list by padding each element by N.
Examples:
Input : lst = [1, 2, 3] N = 3 Output : [1, 1, 1, 2, 2, 2, 3, 3, 3] Input : lst = ['cats', 'dogs'] N = 2 Output : ['cats', 'cats', 'dogs', 'dogs']
Approach #1 : List comprehension
Python3
# Python3 program to increase list size # by padding each element by N def increaseSize(lst, N): return [el for el in lst for _ in range (N)] # Driver code lst = [ 1 , 2 , 3 ] N = 3 print (increaseSize(lst, N)) |
[1, 1, 1, 2, 2, 2, 3, 3, 3]
Time Complexity: O(n), where n is the number of elements in the list
Auxiliary Space: O(1), constant space needed
Approach #2 : Using functools.reduce() method The reduce function apply a particular function passed in its argument to all of the list elements. Therefore, in this approach we apply a function on each element where it’s occurrence gets multiplied by N.
Python3
# Python3 program to increase list size # by padding each element by N from functools import reduce def increaseSize(lst, N): return reduce ( lambda x, y: x + y, [[el] * N for el in lst]) # Driver code lst = [ 1 , 2 , 3 ] N = 3 print (increaseSize(lst, N)) |
[1, 1, 1, 2, 2, 2, 3, 3, 3]
Approach #3 : Using itertools.chain()
Python3
# Python3 program to increase list size # by padding each element by N from itertools import chain def increaseSize(lst, N): return list (chain( * ([el] * N for el in lst))) # Driver code lst = [ 1 , 2 , 3 ] N = 3 print (increaseSize(lst, N)) |
[1, 1, 1, 2, 2, 2, 3, 3, 3]
Approach #4 : Using * and extend() method
- Initiate a for loop to access list elements
- Repeat each list element by using * operator
- And add repeated elements to output list(using extend())
- Display output list
Python3
# Python3 program to increase list size # by padding each element by N lst = [ 1 , 2 , 3 ] N = 3 x = [] for i in lst: x.extend([i] * N) print (x) |
[1, 1, 1, 2, 2, 2, 3, 3, 3]
Time Complexity : O(N)
Auxiliary Space : O(N)