Reputation: 31
Simple question how would you find that all the elements in a nested list are equal to 0 or specific value my code goes like this
a = [[0,0,0],[0,0,0]]
def checkall(a):
zeros = 0
for i in a:
for b in i:
if b==0:
zeros+=1
else:
break
is there any other better way to do this? without importing any libraries
Upvotes: 0
Views: 3209
Reputation: 1480
A simple function can do this:
def is_sublists_equal(master_list:list, element)->bool:
'''
Checks if all sublists are equal to given item
'''
i=0
if master_list[0][0]!=element:
return False
while master_list[0]==master_list[i]:
i+=1
if i>(len(master_list)-1):
return True
else:
return False
Example:
is_sublists_equal([['a','a','a'], ['a','a','a'], ['a','a','a']], 'a') #returns True
is_sublists_equal([['a','a','a'], ['a','b','a'], ['a','a','a']], 'a') #returns False
is_sublists_equal([['a','a','a'], ['a','a','a'], ['a','a','a']], 'b') #returns False
Upvotes: 0
Reputation: 51
You could try this:
def checkNested(ls,n):
total = 0
for i in ls:
total += i.count(n)
return total
Where ln
is the list (must have nested lists) and n
is the number you are checking. It returns the total n's found in your nested lists. checkNested([[0,0,0],[0,0,0]])
returns 6.
Upvotes: 0
Reputation: 24
You could use list comprehension:
b = [True if d==0 else False for i in a for d in i]
all(b)
The first line creates a list of boolean values (True if the element is zero, False otherwise). Then the second line checks if all the list consists of True values.
Upvotes: 0
Reputation: 3855
You can iterate through all sublists of a
and check if the count of 0s is equal to the length of the sublist, meaning it contains only 0s, and then check if all of the resulting values are True
:
a = [[0,0,0],[0,0,0]]
def checkall(a):
return all(el.count(0) == len(el) for el in a)
This results in
>>> checkall(a)
True
Upvotes: 1
Reputation: 1635
The following expression returns True
if all elements are 0 (or False), else return False
not any(any(x) for x in a)
Upvotes: 0