I need Python to search all the sublists of a given list, but this does not work when I'm searching for an element contained in only one of them. For example, this is my code:
data = [[4,5],[4,7]]
search = 4
for sublist in data:
if search in sublist:
print("there", sublist)
else:
print("not there")
print(data)
and this works very well if my search is contained in all of the sublists of the lists. However, if my search is, for instance, 5, then I get:
there [4,5] #I only want this part.
not there # I don't want the rest.
[[4, 5], [4, 7]]
EDIT:
Basically, I need Python to list all the lists the search is contained in, but if the search is only contained in one sublist, I only want the print("there", sublist)
. In other words, I only want Python to recognize the places the search is in, and not output where it is not, so no print("not there") print(data)
.
What you were probably trying to write:
A better way to write that:
There is no reason to include the
else
clause if you don't want to do anything with the sub-lists that don't include the search value.A nifty use of
else
is after thefor
block (but this only will find one entry) (doc):which will execute the
else
block if it makes it through the whole loop with out hitting abreak
.Try using a boolean tag. For example:
This way the print data is outside the for loop and won't be printed each time a sublist is found that does not contain search.
You might be looking for
there in [4, 5]
not there in [4, 7]
there in [5, 6]
there in [4, 5]
I just tried your code, and i am not seeing anything wrong while searching 5