파이썬의 Transpose/Unzip 함수 이해하기

파이썬에서 데이터 작업을 할 때, 종종 리스트와 튜플을 조작해야 할 필요가 있습니다. 일반적인 작업 중 하나는 2-아이템 튜플의 리스트를 두 개의 별도 리스트로 변환하는 것입니다. 이는 데이터 분석에서 키와 값을 분리하거나 데이터를 쉽게 조작하기 위해 분류할 필요가 있을 때 매우 중요합니다.

문제

아래와 같은 튜플 리스트가 있다고 가정해 보겠습니다:

original = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]

당신의 목표는 이 리스트를 두 개의 개별 리스트로 변환하는 것입니다:

  • 하나의 리스트는 첫 번째 요소를 포함해야 합니다: ['a', 'b', 'c', 'd']
  • 두 번째 리스트는 두 번째 요소를 포함해야 합니다: [1, 2, 3, 4]

이 작업은 튜플을 “언지퍼"하거나 데이터의 축을 교환하는 전치(transpose) 함수를 적용하는 것으로 설명될 수 있습니다.

해결책

다행히도 파이썬은 이를 도와줄 수 있는 zip이라는 내장 함수를 제공합니다. Python 2.x와 Python 3.x에서 이를 사용하는 방법을 살펴보겠습니다.

Python 2.x에서 zip 사용하기

Python 2.x에서는 zip이 언팩킹 연산자 *라는 특수 연산자를 적용할 때 자신의 역으로 작용합니다. 원본 튜플 리스트에 적용하는 방법은 다음과 같습니다:

result = zip(*original)
# 결과는: (['a', 'b', 'c', 'd'], [1, 2, 3, 4])가 됩니다.
  • * 연산자는 튜플을 zip 함수의 개별 인수로 효과적으로 언팩킹합니다.
  • 이를 통해 직접적으로 전치된 버전을 얻을 수 있습니다.

Python 3.x에서 zip 사용하기

Python 3.x에서는 zip의 동작이 약간 변경되어 리스트 대신 지연(iteration) 이터레이터를 반환합니다. 그러나 여전히 Python 2.x와 동일한 결과를 얻기 위해 이를 리스트로 쉽게 변환할 수 있습니다. 코드는 다음과 같습니다:

result = list(zip(*original))
# 결과는: (['a', 'b', 'c', 'd'], [1, 2, 3, 4])가 됩니다.
  • zip(*original)list()로 감싸면 지연 이터레이터를 리스트 형식으로 변환하여 쉽게 사용할 수 있습니다.

결론

이제 파이썬에서 2-아이템 튜플 리스트를 전치하거나 “언지퍼"하는 방법에 대한 확고한 이해를 가지게 되었습니다! Python 2.x 또는 3.x에서 작업하든, 언팩킹 연산자와 함께 사용되는 zip 함수는 데이터를 더 쉽게 조작할 수 있도록 요소를 분리하는 우아한 솔루션을 제공합니다.

이 접근을 귀하의 파이썬 프로젝트에 통합하여 더 깔끔하고 효율적인 코드를 작성해 보세요. 행복한 코딩 되세요!