Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

260
Visualizações
Drawbacks of using <= operator instead of == plus an assumption

I have been part of a code review in which I have a condition such as this one (Python code):

my_list = <whatever list>

if len(my_list) <= 0:
    do_something()

I have been pointed out that the condition should be == instead of <= as a list cannot have a negative length. I have no issues with it in this case, but I wanted to know if there is really any drawbacks on using <=.

Here is my rationale on why to use <=:

  1. The actual condition that I want to check is not len(my_list) > 0 which is equivalent to len(my_list) <= 0, so that is correct for sure.
  2. As explained in point 1, len(my_list) == 0 alone is not equivalent to the original condition. It is in this case, but it is not trivial why it is this way. len() returns the value returned by __len__() which may be an arbitrary. It only happens to be equivalent because the len() implementation performs some validations on the value. One could argue that len() implementation may change in the future, so the equivalence would not hold anymore.
  3. I feel len(my_list) <= 0 would be safer in general than using len(my_list) == 0 plus an assumption that might not hold in some edge or unexpected cases.

So, are my arguments correct? Do you know any drawbacks of using len(my_list) <= 0?

Sorry if this seems like a non-relevant question, but this have been raised to me more than once on code reviews so wanted to understand if there is something I am missing.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

So, after some more digging I found this in the python PEP 8 programming recommendations (https://peps.python.org/pep-0008/#programming-recommendations)

# Not recommended
my_list = []
if not len(my_list):
    print('List is empty!')

# Recommended
my_list = []
if not my_list:
    print('List is empty!')

so now you know the most pythonic way to check if a list is empty!

After testing a bit, I found this works even for custom classes! But my test might be incomplete.

class Test:
    def __init__(self, len):
        self.len = len

    def __len__(self):
        return self.len


t1 = Test(3)
if len(t1):
    print("len1 > 0")
if t1:
    print("len2 > 0")

t1 = Test(0)
if len(t1):
    print("len3 > 0")
if t1:
    print("len4 > 0")

t1 = Test(-1)
if len(t1):
    print("len5 > 0")

prints

len1 > 0
len2 > 0

Exception has occurred: ValueError
__len__() should return >= 0
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda