리스트와 같은 순회 가능한(iterable) 객체를 받아 각 원소에 짝을 지어 지어 튜플 형태로 차례대로 접근 할 수 있게 만든 것.
문제로 알아보자!
문제 링크 : https://www.acmicpc.net/problem/2738

코드
n, m = map(int, input().split())
a_l = []
for i in range(n*2):
a_l.append(list(map(int, input().split())))
ans = []
for i in range(n):
ans.append([x + y for x,y in zip(a_l[i], a_l[i+n])])
print(' '.join(map(str, ans[i])))
ans.append([x + y for x,y in zip(a_l[i], a_l[i+n])])
- 문장을 해석해보면, a_l[i]과 a_l[i+n] 배열의 요소를 하나씩 짝을 지어 x, y 변수로 읽어들여 넣어 x+y인 값을 ans 배열에 삽입하고 있습니다.
이렇듯 짝을 지어 x , y 변수로 읽어올 수 있었던 것은 zip 함수를 사용하여 차례대로 접근할 수 있게 됐기 때문이다.
🍎 결국
for p in zip(a_l[i], a_l[i+n])에서 p를 출력해보면
(1, 3)
(1, 3)
(1, 3)
...
짝지어 나오게 된다.
각 객체의 길이를 조심하자! 길이가 맞지 않으면 그 만큼은 버린다~!
여러 2개 이상의 그룹 데이터를 루프를 돌려 처리할 수 있다.
for a, b, c in zip("abcde", "12345", "78910") print(a, b, c)--> 출력
a 1 7
b 2 8
...