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.

¿Por qué iter() ordena en su lugar un conjunto en Python?

Llamando a iter() en un conjunto en Python parece ordenar el conjunto en su lugar.

Ejemplo:

>>> my_set = {2, 1, 3}
>>> _ = iter(my_set)
>>> my_set
{1, 2, 3}

Me pregunto por qué ocurre esto. Supongo que tiene algo que ver con la forma en que __iter__ o __next__ están implementados para set en cPython, pero no estoy seguro.

Cualquier idea es bienvenida.


EDIT:

Como se señala en las respuestas y comentarios a continuación, _ = iter(my_set) no cambia los resultados: my_set se imprime ‘ordenado’. Las razones se explican en detalle aquí.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La función iter() en Python devuelve un iterador para un objeto contenedor. Cuando se llama a iter() en un conjunto en Python, el conjunto no se ordena en su lugar. En su lugar, se devuelve un iterador para el conjunto.

    Sin embargo, el orden en el que se devuelven los elementos de un conjunto por el iterador puede parecer ordenado debido a la forma en que los conjuntos se implementan en cPython. Según la documentación, los conjuntos se implementan como una tabla hash con una semilla aleatoria que se elige cuando el intérprete de Python se inicia. Esto puede causar que el orden de los elementos en un conjunto sea diferente cada vez que se inicia el intérprete y puede llevar a confusión sobre si los conjuntos en Python están ordenados o desordenados.

    En resumen, llamar a iter() en un conjunto en Python no ordena el conjunto en su lugar, pero el orden en el que se devuelven los elementos del conjunto por el iterador puede parecer ordenado debido a la implementación de conjuntos en cPython.

Comments are closed.