(x, y) == tuple(zip(*zip(x,y))) 다음 두 문장이 참인 경우에만 참입니다.
진행 상황을 이해하는 한 가지 좋은 방법은 각 단계에서 인쇄하는 것입니다.
x = [1, 2, 3]
y = ["a", "b", "c", "d"]
print("1) x, y = ", x, y)
print("2) zip(x, y) = ", list(zip(x, y)))
print("3) *zip(x, y) = ", *zip(x, y))
print("4) zip(*zip(x,y)) = ", list(zip(*zip(x,y))))
출력되는 내용 :
1) x, y = [1, 2, 3] ['a', 'b', 'c', 'd']
2) zip(x, y) = [(1, 'a'), (2, 'b'), (3, 'c')]
3) *zip(x, y) = (1, 'a') (2, 'b') (3, 'c')
4) zip(*zip(x,y)) = [(1, 2, 3), ('a', 'b', 'c')]
기본적으로 다음과 같은 일이 발생합니다.
x및 항목y 해당 인덱스에 따라 쌍을 이룹니다.
- 쌍은 3 개의 다른 개체 (튜플)로 압축 해제됩니다.
- 쌍은 zip으로 전달되며, 이는 다시 색인을 기반으로 모든 항목을 쌍으로 만듭니다.
- 모든 입력의 첫 번째 항목이 쌍을 이룹니다.
(1, 2, 3)
- 모든 입력의 두 번째 항목이 쌍을 이룹니다.
('a', 'b', 'c')
이제이 (x, y) == tuple(zip(*zip(x,y)))경우 왜 거짓 인지 이해할 수 있습니다 .
- 이후
y이상이며 x, 최초의 우편 작업이에서 추가 항목을 제거y (이 짝되지 않을 수 있기 때문에), 이러한 변화는 분명 둘째을 압축 작업에 repercuted한다
- 유형이 다르지만 처음에는 두 개의 목록이 있었지만 이제는
zip목록이 아닌 튜플의 쌍 항목 처럼 두 개의 튜플 이 있습니다.
어떻게 zip작동 하는지 100 % 확실하지 않다면 여기에이 질문에 대한 답을 썼습니다. Unzipping 및 * 연산자