Python: How to check if two lists are not empty
It's working fine. For a = [2]
and b = [1, 3]
, a and b
is returning [1, 3]
which is truthy, exactly as you would expect, because True and True
is True
. When you change b
to []
it returns []
, which is falsy, again exactly as you would expect, because True and False
is False
. So if a and b
does exactly what you want.
What is actually happening is that and
is returning the value that decided the truth of the expression. and
doesn't always evaluate both sub-expressions; when the first is falsy, the whole expression is falsy and the second doesn't need to be evaluated, and therefore isn't. This is called short-circuiting. or
behaves similarly (skipping evaluating the second part if the first part is truthy). Wherever and
or or
is able to make its decision, it returns that value.
Another way of looking at it: bool(a) and bool(a) == bool(a and b)
in Python.
a and b
is correct.
and
returns the second argument if the first is true.