Open In App

Python - Extract Row with any Boolean True

Last Updated : 24 Apr, 2023
Comments
Improve
Suggest changes
Like Article
Like
Report

Given a Boolean Matrix, extract a row that contains at least one boolean True value.

Input : test_list = [[False, False], [True, True, True], [False, True], [False]] 
Output : [[True, True, True], [False, True]] 
Explanation : All rows with atleast 1 True extracted.


Input : test_list = [[False, False], [False]] 
Output : [] 
Explanation : No rows with even one True. 
 

Method #1 : Using list comprehension + any()

In this, we check for any element to be boolean true using any() and list comprehension is used for task of iteration of rows in matrix.

Python3
# Python3 code to demonstrate working of 
# Extract Row with any Boolean True
# Using list comprehension + any()

# initializing list
test_list = [[False, False], [True, True, True], [False, True], [False]]

# printing original list
print("The original list is : " + str(test_list))

# using any() to check for any True value 
res = [sub for sub in test_list if any(ele for ele in sub)]

# printing result 
print("Extracted Rows : " + str(res))

Output
The original list is : [[False, False], [True, True, True], [False, True], [False]]
Extracted Rows : [[True, True, True], [False, True]]

Time Complexity : O(n^2)

Space Complexity : O(n) 

Method #2: Using any() + filter() + lambda

In this, we perform the task of checking for any True value using any() and filter(), and lambda is used to filter out matching rows.

Python3
# Python3 code to demonstrate working of
# Extract Row with any Boolean True
# Using any() + filter() + lambda

# initializing list
test_list = [[False, False], [True, True, True], [False, True], [False]]

# printing original list
print("The original list is : " + str(test_list))

# using any() to check for any True value
# filter() to perform filtering
res = list(filter(lambda sub: any(ele for ele in sub), test_list))

# printing result
print("Extracted Rows : " + str(res))

Output
The original list is : [[False, False], [True, True, True], [False, True], [False]]
Extracted Rows : [[True, True, True], [False, True]]

Time Complexity : O(n^2)

Space Complexity : O(n) 

Method #3 : Using count() method

Python3
# Python3 code to demonstrate working of
# Extract Row with any Boolean True

# initializing list
test_list = [[False, False], [True, True, True], [False, True], [False]]

# printing original list
print("The original list is : " + str(test_list))

res=[]
for i in test_list:
    if(i.count(True)>=1):
        res.append(i)

# printing result
print("Extracted Rows : " + str(res))

Output
The original list is : [[False, False], [True, True, True], [False, True], [False]]
Extracted Rows : [[True, True, True], [False, True]]

Time Complexity : O(n*m)

Space Complexity : O(n) 

Method #4 : Using in operator

Python3
# Python3 code to demonstrate working of
# Extract Row with any Boolean True

# initializing list
test_list = [[False, False], [True, True, True], [False, True], [False]]

# printing original list
print("The original list is : " + str(test_list))

# using any() to check for any True value
res=[]
for i in test_list:
    if True in i:
        res.append(i)
# printing result
print("Extracted Rows : " + str(res))

Output
The original list is : [[False, False], [True, True, True], [False, True], [False]]
Extracted Rows : [[True, True, True], [False, True]]

time complexity : O(n * m)

space complexity : O(n)

Method #5:Using itertools.filterfalse() method

Python3
# Python3 code to demonstrate working of
# Extract Row with any Boolean True
import itertools
# initializing list
test_list = [[False, False], [True, True, True], [False, True], [False]]

# printing original list
print("The original list is : " + str(test_list))


res = list(itertools.filterfalse(lambda sub: not any(ele for ele in sub), test_list))

# printing result
print("Extracted Rows : " + str(res))

Output
The original list is : [[False, False], [True, True, True], [False, True], [False]]
Extracted Rows : [[True, True, True], [False, True]]

Time Complexity:O(N*N)
Auxiliary Space:O(N*N)

Method 6 :  using a for loop and a temporary list to keep track of the rows that contain True.

 step-by-step  approach :

Initialize an empty list res to store the rows that contain True.
Loop over each row i in the test_list.
Check if any element in the row i is True using the any() function. If it is, append the row i to the res list.
After looping over all rows, print the res list to show the extracted rows.

Python3
# initializing list
test_list = [[False, False], [True, True, True], [False, True], [False]]

# printing original list
print("The original list is : " + str(test_list))

# using for loop and temporary list to extract rows with any True value
res = []
for i in test_list:
    if any(i):
        res.append(i)

# printing result
print("Extracted Rows : " + str(res))

Output
The original list is : [[False, False], [True, True, True], [False, True], [False]]
Extracted Rows : [[True, True, True], [False, True]]

Time complexity: O(nm), where n is the number of rows and m is the maximum length of a row.
Auxiliary space: O(k), where k is the number of rows with at least one True value.


Next Article
Practice Tags :

Similar Reads