Python 08 - 파이썬만의 독특한 반복문 with Tuple
다른 언어와 다르게 파이썬은 반복문의 활용에 있어 매우 큰 장점이 있다.
바로 반복문의 카운터 변수로 여러 변수를 이용할 수 있다는 점이다.
다른 언어의 경우 보통 하나의 카운터 변수만을 사용할 수 있다.
for i,j in zip([1,2,3,4,5],[6,7,8,9,10]):
print(i,j)
하지만 파이썬의 경우 위와 같 여러 카운터를 이용할 수 있는데 바로 튜플의 특징 때문이다.
파이썬에서 튜플은 패킹과 언패킹이란 특징을 가지고 있는데 이에 대해 알아보자.
패킹이란 여러 개의 변수를 튜플로 묶는 것을 의미한다.
tuple1 = (1,2,3) # 튜플의 패킹 선언1
tuple2 = 1,2,3,4 # 튜플의 패킹 선언2
tuple3 = tuple(1,2,3,4) # 튜플의 패킹 선언3
언패킹이란 튜플의 요소를 개별 변수로 할당하는 것을 의미한다.
a,b,c = tuple1 # 튜플의 언패킹
d,e,f,g = 1,2,3,4 # == (1,2,3,4), 튜플의 언패킹2
x,y = y,x # (y,x)라는 튜플을 x,y라는 변수에 언패킹
이러한 특징 덕에 for문에 여러 카운터 변수를 사용할 수 있는 것이다.
다중 카운터 변수에 앞서 일반적인 경우인, 단일 카운터 변수를 사용하는 경우를 먼저보자.
for 문에서 in 뒤에는 이터러블한 객체, 즉 반복가능한 or 순환이 가능한 객체가 들어가야한다.
iterable 객체로는 리스트, 튜플, 문자열, set, dict, range, file 객체 등이 있다.
for문은 iterable한 객체를 하나씩 순회하면서 값을 카운터 변수에 값을 담아 사용할 수 있다.
for문에서 다중 카운터 변수를 이용해야 할 경우에는 이터러블한 객체의 각 원소가 튜플의 형식으로 되어있어야 한다.
for i,j in [(1,2),(2,3),(3,4)]:
print(i,j)
for문이 튜플 데이터를 i,j 라는 변수에 언패킹 하면서 순회를 하는 것이다.
튜플만 이런 특징을 가지고 있고 다른 이터러블한 객체는 이런 기능을 지원하지 않는다.
그래서 파이썬에서는 zip() 내장함수를 지원한다.
zip()은 리스트, set, 문자열 등등 다양한 이터러블한 객체를 요소별로 묶어 튜플 형식의 이터러블한 객체로 반환하는 내장함수이다.
zip은 다시 말해 여러 배열을 튜플로 패킹 해주는 함수이다.
zip()함수를 거쳐 나온 반환 값을 list,dict,tuple,문자열 등등 원하는 형태로 생성하여 사용할 수 도 있고 활용 방법이 무궁무진하다.
파이썬의 반복문의 독특한 특징과 튜플의 패킹과 언패킹에 대해서 알아보았는데, 패킹과 언패킹은 함수에 있어서도 꽤 중요한 역할을 한다. 그래서 이에 대해 다음 글에서 적어보도록 하겠다.