es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Inconsistencia al convertir una lista en un conjunto en Python 3.

Estoy confundido acerca de cómo Python-3 realiza la conversión de lista a conjunto de manera inconsistente. Cuando una lista de entrada está ordenada en orden descendente, se crea un conjunto ordenado en orden ascendente. Cuando una lista de entrada no está ordenada, no hace nada y el conjunto resultante está desordenado. En un caso, incluso una lista desordenada se convierte en un conjunto ordenado.

# la lista no está ordenada y el conjunto resultante está desordenado
lst1 = [9,100,1]
thisset1 = set(lst1)
print(thisset1)     # 9,100,1

# la lista está ordenada en orden descendente y
# el conjunto resultante está ordenado en orden ascendente
lst2 = [4,3,2,1]
thisset2 = set(lst2)
print(thisset2)     # 1,2,3,4

# la lista está ordenada en orden descendente y 
# el conjunto resultante está ordenado en orden ascendente
lst4 = [500,400,200]
thisset4 = set(lst4)
print(thisset4)    # 500,400,200

# la lista no está ordenada pero el conjunto resultante está ORDENADO en orden ascendente
lst3 = [4,1,3,2]
thisset3 = set(lst3)
print(thisset3)

¿Es esto debido a la función de hash?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El comportamiento inconsistente de Python-3 en la conversión de lista a conjunto no se debe al hashing. Es porque el conjunto es una colección desordenada de elementos únicos, y el orden de la lista de entrada no se conserva en el conjunto resultante. Cuando la lista de entrada se ordena en orden ascendente o descendente, el conjunto resultante se crea en orden ascendente. Sin embargo, cuando la lista de entrada no está ordenada, el orden del conjunto resultante es indefinido y puede variar entre ejecuciones. Por lo tanto, se recomienda ordenar la lista antes de convertirla en un conjunto si el orden es importante.

Comments are closed.