No tengo idea de por qué esto está regresando Ninguno

def list_union(self,A,B):
    A = self.separate(A["fill"])
    B = self.separate(B["fill"])
    print A
    print B
    if len(A)==1 and A[0]=="no":
        return B.sort()
    if len(B)==1 and B[0]=="no":
        return ["no"]

Simplemente suponga que A y B se devuelven como un tipo de lista (que es y funciona bien)

A y B pueden contener las cadenas sí o no. Simplemente no entiendo por qué están regresando Ninguno.

Permítanme agregar, no me importa si estas dos afirmaciones son falsas porque hay más en este programa, pero creo que cualquier problema que tenga se puede resolver averiguando por qué esto no funciona.

-1
Chris Jones 5 sep. 2014 a las 15:23

2 respuestas

La mejor respuesta

¡B.sort() no devuelve B, devuelve None! (Pero B está ordenado como quisiste)

Puede usar sorted(B) que le devolverá lo que desea.

De hecho, el método sort () incorporado modifica la lista en el lugar.

La función incorporada sorted () crea una nueva lista ordenada.

1
DavidK 5 sep. 2014 a las 15:06

Por defecto, una función en Python devuelve None. En su caso, tiene dos puntos de salida, pero se alcanzarán solo si una de las condiciones es True. Pregúntese, ¿qué sucede si ambas condiciones son False? agregue otro retorno al final, para manejar este caso y devolver un valor apropiado (o generar una excepción, si tiene sentido):

return "Unexpected result" # just an example 

Además, tenga en cuenta que sort() no devuelve un valor (ordena la lista en el lugar), por lo que también se evaluará a None. En otras palabras, debe cambiar esta línea:

return B.sort()

Haga esto en su lugar:

B.sort()
return B

O haga esto, que devuelve una nueva lista ordenada:

return sorted(B)
4
Óscar López 5 sep. 2014 a las 11:32