2013-07-17 3 views
0

저는 방금 python set comprehensions을 배우기 시작했습니다. 왜 { 2**x for x in {0,1,2,3,4} }{1, 2, 4, 8, 16} 대신 {8, 1, 2, 4, 16}을 반환합니까?Python Set Comprehensions

+3

파이썬 세트는 주문되지 않습니다. 그것들은 같은 세트이기 때문에 "대신"은 없습니다. – geoffspear

+0

[파이썬 세트 요소 변경 순서] (http://stackoverflow.com/q/9792664) 및 [파이썬에서 이해하기 설정] (http://stackoverflow.com/a/17446318) –

+0

참고 http : // code.activestate.com/recipes/576694/ –

답변

2

수학적으로 말하면 세트에는 주문이 없습니다. 집합을 표시하거나 반복 할 때 Python은 분명히 특정 순서를 제공해야하지만이 순서는 임의적이며 의존하지 않아야합니다. 그러나 주문은 특정 세트에 대해 고정되어 있습니다. 동일하게 반복하면 은 수정되지 않고으로 설정 될 때마다 동일한 순서가 생성됩니다.

관련 문제