En la primera parte, tengo 2 listas que son iguales pero sin clasificar. Cuando verifico si son iguales, la función de impresión devuelve "False", lo cual tiene sentido.

listx1, listx2=[9, 7, 5, 3], [3, 5, 7, 9] 
print(listx1 == listx2)     #returns False

Cuando clasifico esta lista, la función de impresión devuelve "Verdadero". Hasta este punto entendí:

print(listx1.sort() == listx2.sort())   #returns True

Ahora, uso 2 listas desiguales y las comparo. Esta vez también, la función de impresión devuelve False, lo cual tiene sentido.

listx3, listx4 =[5, 3, 2, 7], [3, 5, 7, 9]
print(listx3 == listx4)              #returns False

¿Pero no debería obtener "Falso" mientras verifico su igualdad, incluso después de ordenarlos (considerando que consisten en elementos desiguales)? Aquí, estoy confundido porque después de ordenar listx3 y listx4, la función de impresión devuelve "True". (según el código escrito a continuación)

print(listx3.sort() == listx4.sort())     #returns True

¿Dónde me equivoco en mi entendimiento?

-1
Diwakar Das 29 abr. 2020 a las 21:20

2 respuestas

La mejor respuesta

listx1.sort() ordena la lista en su lugar y devuelve None, como todas las funciones y métodos que no tienen un valor de retorno específico. Entonces tu prueba:

listx1.sort() == listx2.sort()

Es en realidad None == None, que es verdadero.

Lo que debe hacer para comparar las listas ordenadas es:

listx1.sort()
listx2.sort()
list1 == list2
3
Thierry Lathuille 29 abr. 2020 a las 18:24

El método .sort() opera en la lista in situ y no devuelve nada. La función incorporada sorted() devuelve una nueva copia ordenada de la lista. Si utiliza:

sorted(listx3) == sorted(listx4)

Obtendrá la respuesta que espera.

En casos como este, probar las partes individuales del código en el intérprete de Python lo ayudaría a descubrir qué está sucediendo. Por ejemplo, si print(listx3.sort()) verías que imprime None.

1
Craig 29 abr. 2020 a las 18:26