Python/파이썬 기초

파이썬 zip 함수 사용법, for문에서 변수 여러개 순회 예제

jimmy_AI 2022. 3. 24. 00:42
반응형

파이썬 zip 함수 원리와 순회 변수 2개 이상의 for문 구현

안녕하세요. 이번 시간에는 변수 여러개의 순서쌍을 튜플 형태로 묶을 수 있는 zip 함수의

사용 방법과 zip을 기반으로 2개 이상의 변수를 for문에서 순회하는 예제를 살펴보겠습니다.

 

 

zip 함수의 원리와 기본 사용법

zip 함수의 원리는 길이가 같은 두개 이상의 자료형에 대하여

동일한 위치의 자료끼리 튜플 형태로 묶어주는 역할을 수행합니다.

 

기본적인 사용법은 zip(x, y, z, ...) 처럼 원하는 자료들을 순서대로 인자로 넣어주시면 됩니다.

 

예를 들면, 아래의 예시에서

x = [123]
y = ['a''b''c']
z = ['가''나''다']

와 같이 길이가 3으로 동일한 3개의 리스트 자료가 있다고 할 때,

0번째 자료끼리, 1번째끼리, 2번째끼리 모아서 튜플 형태로 반환된 결과를 확인할 수 있습니다.

 

결과를 쉽게 확인하기 위하여 zip의 결과를 list로 다시 변환한 점도 참고해주세요.

x = [1, 2, 3]
y = ['a', 'b', 'c']
z = ['가', '나', '다']

print(zip(x, y)) # <zip object at 0x7f46701f0640> : 순회 준비는 완료되었으나, 출력 결과 자체는 zip object로 출력
list(zip(x, y)) # [(1, 'a'), (2, 'b'), (3, 'c')]
list(zip(x, y, z)) # [(1, 'a', '가'), (2, 'b', '나'), (3, 'c', '다')]

 

만일, 자료들 간의 길이가 같지 않다면 가장 짧은 자료를 기준으로 해당 위치에서

튜플 생성이 마무리됩니다.

x = [1, 2, 3]
y = ['a', 'b', 'c']
z = ['가']

list(zip(x, y, z)) # [(1, 'a', '가')]

z가 길이가 1로 가장 짧아 x와 y의 원소도 가장 처음 원소만 가져올 수 있었습니다.

반응형

zip 함수 이용 변수 2개 이상의 for문 생성

zip 함수의 기능을 통하여 여러개의 변수를 순회하는 for문을 쉽게 구현해볼 수 있습니다.

 

예를 들어, 위의 예시의 x와 y를 zip으로 묶은 리스트를 순회하여

두 개의 순회 인자 i, j로 받은 값을 아래와 같이 출력해볼 수 있습니다.

x = [1, 2, 3]
y = ['a', 'b', 'c']

for i, j in zip(x, y):
    print('현재 i는', i, '이고, j는', j, '입니다.')

# 출력 결과
현재 i는 1 이고, j는 a 입니다.
현재 i는 2 이고, j는 b 입니다.
현재 i는 3 이고, j는 c 입니다.

 

위 과정의 원리는 두 개 이상의 변수를 튜플로 동시에 선언가능한 언패킹

과정이 작용하여, i와 j에 zip(x, y) 결과 튜플의 두 값이 동시에 주어지는 것입니다.

# 언패킹 예시
i, j = (1, 'a')

print(i) # 1
print(j) # 'a'

 

같은 방식으로 3개 이상의 순회 변수를 가지는 복잡한 형태의 for문 역시 구현이 가능합니다.

x = [1, 2, 3]
y = ['a', 'b', 'c']
z = ['가', '나', '다']

for i, j, k in zip(x, y, z):
    print('현재 i는', i, '이고, j는', j, '이고, k는', k, '입니다.')

# 출력 결과
현재 i는 1 이고, j는 a 이고, k는 가 입니다.
현재 i는 2 이고, j는 b 이고, k는 나 입니다.
현재 i는 3 이고, j는 c 이고, k는 다 입니다.