Python program to omit K length Rows
Last Updated :
04 Apr, 2023
Given a Matrix, remove rows with length K.
Input : test_list = [[4, 7], [8, 10, 12, 8], [10, 11], [6, 8, 10]], K = 2
Output : [[8, 10, 12, 8], [6, 8, 10]]
Explanation : [4, 7] and [10, 11] omitted as length 2 rows.
Input : test_list = [[4, 7], [8, 10, 12, 8], [10, 11], [6, 8, 10]], K = 3
Output : [[4, 7], [8, 10, 12, 8], [10, 11]]
Explanation : [6, 8, 10] omitted as length 3 rows.
Method #1 : Using loop + len()
In this, we check for the length of each row using len(), if found to be equal to K, that row is omitted from Matrix.
Python3
test_list = [[ 4 , 7 ],
[ 8 , 10 , 12 , 8 ],
[ 10 , 11 ],
[ 6 , 8 , 10 ]]
print ( "The original list is : " + str (test_list))
K = 2
res = []
for row in test_list:
if len (row) ! = K :
res.append(row)
print ( "Filtered Matrix : " + str (res))
|
Output:
The original list is : [[4, 7], [8, 10, 12, 8], [10, 11], [6, 8, 10]] Filtered Matrix : [[8, 10, 12, 8], [6, 8, 10]]
Time Complexity: O(n*m)
Auxiliary Space: O(k)
Method #2 : Using filter() + lambda + len()
In this, we use filter() to extract rows with lengths other than K. The lambda function is used to render length computation logic.
Python3
test_list = [[ 4 , 7 ],
[ 8 , 10 , 12 , 8 ],
[ 10 , 11 ],
[ 6 , 8 , 10 ]]
print ( "The original list is : " + str (test_list))
K = 4
res = list ( filter ( lambda row : len (row) ! = K, test_list))
print ( "Filtered Matrix : " + str (res))
|
Output:
The original list is : [[4, 7], [8, 10, 12, 8], [10, 11], [6, 8, 10]] Filtered Matrix : [[4, 7], [10, 11], [6, 8, 10]]
Time Complexity: O(n*m)
Auxiliary Space: O(k)
Using slicing and concatenation:
Approach:
Define a function named “omit_k_length_rows” that takes two arguments, a list of lists named “test_list” and an integer named “K”.
Create an empty list named “res” to store the filtered results.
Iterate through each list in “test_list” using a for loop.
Check if the length of the current list is not equal to “K” using the “len” function and the “!=” operator.
If the length is not equal to “K”, add the current list to the “res” list using the “+=” operator and list concatenation.
Return the filtered “res” list.
Use the function to solve the given input and print the output.
Python3
def omit_k_length_rows(test_list, K):
res = []
for row in test_list:
if len (row) ! = K:
res + = [row]
return res
test_list = [[ 4 , 7 ], [ 8 , 10 , 12 , 8 ], [ 10 , 11 ], [ 6 , 8 , 10 ]]
K = 2
result = omit_k_length_rows(test_list, K)
print (result)
K = 3
result = omit_k_length_rows(test_list, K)
print (result)
|
Output
[[8, 10, 12, 8], [6, 8, 10]]
[[4, 7], [8, 10, 12, 8], [10, 11]]
Time Complexity: O(n*m), where n is the number of rows and m is the maximum length of the rows
Auxiliary Space: O(n)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...