Não. Nada está definido sobre a ordem de iteração dos conjuntos (seja por iter(set)ou for e in set:ou ...).
Experimente em um conjunto de strings e você provavelmente descobrirá que a ordem muda entre as execuções.
O que você está vendo é uma consequência indireta de como hash(int)os conjuntos são calculados e de sua interação com a forma como os conjuntos são implementados hoje, no CPython.
Em um PyPy recente, é diferente:
Python 3.10.12 (af44d0b8114cb82c40a07bb9ee9c1ca8a1b3688c, Jun 15 2023, 15:42:22)
[PyPy 7.3.12 with MSC v.1929 64 bit (AMD64)] on win32
...
>>>> x = {1, 9, 2, 8, 4, 6}
>>>> y = iter(x)
>>>> list(y)
[1, 9, 2, 8, 4, 6]
Portanto, o pedido original foi mantido - o que também não é garantido.
Não. Nada está definido sobre a ordem de iteração dos conjuntos (seja por
iter(set)
oufor e in set:
ou ...).Experimente em um conjunto de strings e você provavelmente descobrirá que a ordem muda entre as execuções.
O que você está vendo é uma consequência indireta de como
hash(int)
os conjuntos são calculados e de sua interação com a forma como os conjuntos são implementados hoje, no CPython.Em um PyPy recente, é diferente:
Portanto, o pedido original foi mantido - o que também não é garantido.