파이썬 생성기 표현식의 반복 순서가 유사한리스트 이해 및 생성기 함수와 다른 것으로 보이는 예제가 있습니다. 예를 들어파이썬 생성기 표현식 순서
, 코드
n = 10
d = {i : str(i) for i in range(n)}
for i in d:
print d[i],
print
def func_gen(d):
for i in range(n):
yield d[i]
print(list(func_gen(d)))
g = [d[i] for i in range(n)]
print(g)
g = {d[i] for i in range(n)}
print(list(g))
내가는 지능형리스트와 함께하는 것처럼 발전기 표현이 정렬 된 출력을 생성 기대 출력
0 1 2 3 4 5 6 7 8 9
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
['1', '0', '3', '2', '5', '4', '7', '6', '9', '8']
있습니다. 에 주문이 보장되지 않는다고 말하는 발전기 표현에 관한 것이 있습니까?
구조가 거의 동일해도 생성자 표현식이 다른 표현식과 다른 이유는 무엇입니까? 사전을 반복하는 것과 같은 순서가 아니기 때문에 처럼 보이지 않습니다.
파이썬 2에서 같은 행동을보고 있어요, 3
미리보기에는 특정 순서가 없음을 유의하십시오. 즉, dict의 원래 순서는 유지되지 않습니다. – JCOC611
그 예들에서의 순서는 (나는 생각할 것입니다) * d *에 의해 결정되지는 않지만, 모든 경우에 명령이 내려 질 것으로 기대되는 반복자에 의해 결정됩니다. –
@AJFriend : (마지막 세 가지) 예제의 순서는 목록으로 변환되는 방식에 따라 결정됩니다. 집합의 경우 해당 변환은 순서가 지정되지 않습니다. – jwodder