2017-04-09 9 views
2

for 루프의 헤더 행에서 다음 코드를 언팩 할 수없는 이유를 이해하는 데 문제가 있습니다. 그때 나는이 작업을 수행 할 때파이썬에서`for` 루프 문을 사용하여 시퀀스 구조체를 푸는 것

>>> (a,b),c = (1,2),3 
>>> a 
1 
>>> b 
2 
>>> c 
3 

가 왜 다음 날을주기 때문에 내가 어떻게 작업을 진행하게 알고있다 오류?

for (a,b),c in [(1,2),3]: 
... print(a,b,c) 

을 받는가 :

는 점을 감안 원하는 결과 :

>>> for (a,b),c in [((1,2),3)]: 
... print(a,b,c) 
1 2 3 

그러나 왜 여분의 괄호가 0의 헤더 행에 포함되어 있습니다 이 출력을 얻으려면루프가 필요합니까?

임의의 시퀀스를 압축 해제 할 수 있다고 가정하면 [(1,2), 3]은 목록 시퀀스로서 구문 상으로 정확하며 대상 변수 (a,b),c에 이론적으로 할당 할 수 있어야합니다. 그렇다면 왜 이것이 사실이 아니며 시퀀스를 추가 괄호로 묶어야하는 이유는 무엇입니까?

이 주변의 일부 선명도는 크게 감사하겠습니다.

답변

4

루프가 목록 항목을 반복하므로 처음으로 (1,2)(a,b),c에 할당하려고 시도하면 작동하지 않습니다. 추가 괄호를 추가하면 (1,2),3이 하나의 목록 항목 인 ((1,2),3) 인 터플로 변환되어 for 루프가 처음 반복 될 때 (a,b),c에 할당되며 작동합니다.

시도 :

for v in [(1,2),3]: 
    print v 

그리고 당신은 v은 다음 3, (1,2)를 할당 것을 볼 수 있습니다.

+0

명확하고 간결한 대답입니다. 감사합니다. – seeker