Python – Remove the row if all elements equal to N
Last Updated :
17 Apr, 2023
Sometimes, while handling data, especially in the Machine Learning domain, we need to go through a lot of similar N-equal data. We sometimes need to eliminate the rows which are all equal to N. Let’s discuss certain ways to remove the rows that have all N values as list columns.
Method #1: Using list comprehension + count() + len() We can perform this particular task using the list comprehension recipe, partnered with the combination of len and count function to check for similarity element counter equating to the length of list.
Python3
test_list = [[ 1 , 4 , 2 ], [ False , 9 , 3 ],
[ 6 , 6 , 6 ], [ 1 , 0 , 1 ]]
print ( "The original list : " + str (test_list))
N = 6
res = [sub for sub in test_list if sub.count(N) ! = len (sub)]
print ( "The list after removal of N rows : " + str (res))
|
Output :
The original list : [[1, 4, 2], [False, 9, 3], [6, 6, 6], [1, 0, 1]]
The list after removal of N rows : [[1, 4, 2], [False, 9, 3], [1, 0, 1]]
Time complexity: O(M^N) as the number of combinations generated is M choose N.
Auxiliary space: O(M^N) as the size of the resultant list is also M choose N.
Method #2: Using list comprehension + set() This particular task can also be performed by converting the entire row into a set and then checking for the single value N set for equality and removing if a match is found.
Python3
test_list = [[ 1 , 4 , 2 ], [ False , 9 , 3 ],
[ 6 , 6 , 6 ], [ 1 , 0 , 1 ]]
print ( "The original list : " + str (test_list))
N = 6
res = [sub for sub in test_list if set (sub) ! = {N}]
print ( "The list after removal of N rows : " + str (res))
|
Output :
The original list : [[1, 4, 2], [False, 9, 3], [6, 6, 6], [1, 0, 1]]
The list after removal of N rows : [[1, 4, 2], [False, 9, 3], [1, 0, 1]]
Time complexity: O(M^N) as the number of combinations generated is M choose N.
Auxiliary space: O(M^N) as the size of the resultant list is also M choose N.
Method #3 : Using len() method
Python3
test_list = [[ 1 , 4 , 2 ], [ False , 9 , 3 ],
[ 6 , 6 , 6 ], [ 1 , 0 , 1 ]]
print ( "The original list : " + str (test_list))
N = 6
res = []
for i in test_list:
if ([i[ 0 ]] * len (i) ! = i):
res.append(i)
print ( "The list after removal of N rows : " + str (res))
|
Output
The original list : [[1, 4, 2], [False, 9, 3], [6, 6, 6], [1, 0, 1]]
The list after removal of N rows : [[1, 4, 2], [False, 9, 3], [1, 0, 1]]
Time complexity: O(M^N) as the number of combinations generated is M choose N.
Auxiliary space: O(M^N) as the size of the resultant list is also M choose N.
Method #4 : Using remove()+filter()+copy() +lambda functions
Python3
test_list = [[ 1 , 4 , 2 ], [ False , 9 , 3 ],
[ 6 , 6 , 6 ], [ 1 , 0 , 1 ]]
print ( "The original list : " + str (test_list))
N = 6
for i in test_list.copy():
temp = list ( filter ( lambda x: x = = 6 , i))
if ( len (temp) = = len (i)):
test_list.remove(i)
print ( "The list after removal of N rows : " + str (test_list))
|
Output
The original list : [[1, 4, 2], [False, 9, 3], [6, 6, 6], [1, 0, 1]]
The list after removal of N rows : [[1, 4, 2], [False, 9, 3], [1, 0, 1]]
Time Complexity: O(N*N)
Auxiliary Space : O(1)
Method #5 : Using a for loop
Python3
test_list = [[ 1 , 4 , 2 ], [ False , 9 , 3 ],
[ 6 , 6 , 6 ], [ 1 , 0 , 1 ]]
print ( "The original list : " + str (test_list))
N = 6
result = []
for row in test_list:
if N not in row:
result.append(row)
print ( "The list after removal of N rows : " + str (result))
|
Output
The original list : [[1, 4, 2], [False, 9, 3], [6, 6, 6], [1, 0, 1]]
The list after removal of N rows : [[1, 4, 2], [False, 9, 3], [1, 0, 1]]
Time Complexity: O(N)
Auxiliary Space : O(N)
Method #6 : Using operator.countOf() method
Approach
- Initiated for loop to traverse the nested list
- Used if condition to check whether count(operator.countOf()) of N is equal to length of list
- If the condition is satisfied append the row to output list
- Display the output list
Python3
test_list = [[ 1 , 4 , 2 ], [ False , 9 , 3 ],
[ 6 , 6 , 6 ], [ 1 , 0 , 1 ]]
print ( "The original list : " + str (test_list))
N = 6
res = []
import operator
for i in test_list:
if (operator.countOf(i,N)! = len (i)):
res.append(i)
print ( "The list after removal of N rows : " + str (res))
|
Output
The original list : [[1, 4, 2], [False, 9, 3], [6, 6, 6], [1, 0, 1]]
The list after removal of N rows : [[1, 4, 2], [False, 9, 3], [1, 0, 1]]
Time Complexity: O(N)
Auxiliary Space : O(N)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...