The pythonic way to do it is from the PEP 8 style guide (where Yes means “recommended” and No means “not recommended”):
For sequences, (strings, lists, tuples), use the fact that empty sequences are false.
Yes:ifnot seq:if seq:No:iflen(seq):ifnotlen(seq):
Another way to do it:
if len(li) == 0:
print('the list is empty')
This way it's 100% clear that li is a sequence (list) and we want to test its size. My problem with if not li: ... is that it gives the false impression that li is a boolean variable.
That does make some sense, but following PEP 8 style, it is ugly and unpythonic. If distinguishing list from boolean is important, you should add a comment, not more codes.