Open In App

Python – Remove the row if all elements equal to N

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 code to demonstrate
# N row deletion in Matrix
# using list comprehension + count() + len()
 
# initializing matrix
test_list = [[1, 4, 2], [False, 9, 3],
             [6, 6, 6], [1, 0, 1]]
 
# printing original list
print("The original list : " + str(test_list))
 
# initializing N
N = 6
 
# using list comprehension + count() + len()
# N row deletion in Matrix
res = [sub for sub in test_list if sub.count(N) != len(sub)]
 
# print result
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 code to demonstrate
# N row deletion in Matrix
# using list comprehension + set()
 
# initializing matrix
test_list = [[1, 4, 2], [False, 9, 3],
             [6, 6, 6], [1, 0, 1]]
 
# printing original list
print("The original list : " + str(test_list))
 
# initializing N
N = 6
 
# using list comprehension + set()
# N row deletion in Matrix
res = [sub for sub in test_list if set(sub) != {N}]
 
# print result
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 code to demonstrate
# N row deletion in Matrix
 
# initializing matrix
test_list = [[1, 4, 2], [False, 9, 3],
             [6, 6, 6], [1, 0, 1]]
 
# printing original list
print("The original list : " + str(test_list))
 
# initializing N
N = 6
res = []
for i in test_list:
    if([i[0]]*len(i) != i):
        res.append(i)
 
# print result
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 code to demonstrate
# N row deletion in Matrix
 
# initializing matrix
test_list = [[1, 4, 2], [False, 9, 3],
             [6, 6, 6], [1, 0, 1]]
 
# printing original list
print("The original list : " + str(test_list))
 
# initializing N
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 result
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




test_list = [[1, 4, 2], [False, 9, 3],
             [6, 6, 6], [1, 0, 1]]
# printing original list
print("The original list : " + str(test_list))
N = 6
result = []
for row in test_list:
    if N not in row:
        result.append(row)
# print result
print("The list after removal of N rows : " + str(result))
#This code is contributed by Jyothi pinjala

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 

  1. Initiated for loop to traverse the nested list
  2. Used if condition to check whether count(operator.countOf()) of N is equal to length of list 
  3. If the condition is satisfied append the row to output list
  4. Display the output list




# Python3 code to demonstrate
# N row deletion in Matrix
 
# initializing matrix
test_list = [[1, 4, 2], [False, 9, 3],
            [6, 6, 6], [1, 0, 1]]
 
# printing original list
print("The original list : " + str(test_list))
 
# initializing N
N = 6
res = []
import operator
for i in test_list:
    if(operator.countOf(i,N)!=len(i)):
        res.append(i)
 
# print result
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)


Article Tags :