[Solved] Python function return ‘None’ list


You only return something when if sinRep == dondeborrar fails and then during the loop if(sinRep == sinRep_AUX) succeeds.

You can solve these problems by moving the return statement to the end of the function.

def elimina_Rep(dondeborrar, cantidadNecesaria, fichcompleto):
    sinRep = []                                                 # Donde almacenaremos las NO repetidas
    sinRep_AUX = []                                             # Para borrar en la borrada, (varios ciclos de borrado)
    for elem in dondeborrar:                                    # Primera busqueda de elementos duplicados
        if(elem not in sinRep): sinRep.append(elem)             # Obtenemos una lista sin repeticiones
    if sinRep == dondeborrar : pass                             # Comprobamos que haya diferencia de cantidad entre ambas
    else:
        while(sinRep != sinRep_AUX):
            dif = (cantidadNecesaria - len(sinRep))             # Obtenemos cuantos elementos hemos borrado
            for i in range(0,dif):                              # Generamos tantas nuevas entradas como las que hemos borrado
                sinRep.append(random.choice(fichcompleto))      # Obtenemos una nueva lista completa (pero con posibles repeticiones)    
            for j in sinRep:                                    # Comprobamos que no haya repeticiones de la primera busqueda
                if(j not in sinRep_AUX):                        # Segunda busqueda de elementos duplicados  
                    sinRep_AUX.append(j)                        # Obtenemos una lista sin repeticiones sinRep_AUX desde la primera sin rep  
            if(sinRep == sinRep_AUX): 
                break
            else:
                sinRep = sinRep_AUX
                sinRep_AUX = []  
    return sinRep_AUX

0

solved Python function return ‘None’ list