Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 리스트로 구성된 튜플을 하나의 리스트로 언패킹하는 방법

여러 개의 리스트가 담긴 튜플(tuple of list)을 하나의 리스트로 합쳐서 풀어내야 할 때는 reduce 함수를 활용하면 간단하게 해결할 수 있습니다. 먼저 튜플과 리스트의 기본적인 특징부터 살펴보겠습니다.

튜플(Tuple)이란?

튜플은 불변(immutable) 데이터 타입입니다. 즉, 한 번 정의된 값은 인덱스로 접근하더라도 변경할 수 없으며, 변경을 시도하면 오류가 발생합니다. 읽기 전용 접근을 보장한다는 점에서 데이터 무결성이 중요한 경우에 유용하게 사용됩니다.

리스트(List)란?

리스트는 서로 다른 자료형의 값을 함께 저장할 수 있는 가변(mutable) 자료구조입니다. 정수, 실수, 문자열 등 어떤 데이터 타입이든 요소로 담을 수 있다는 것이 큰 장점입니다.

리스트의 튜플(Tuple of List)이란?

리스트의 튜플이란 여러 개의 리스트가 소괄호 '(' 와 ')' 로 묶여 있는 형태를 의미합니다. 예를 들어 다음과 같은 구조입니다.

(['h', 'jane'], ['m', 'may'])

reduce 함수란?

reduce 함수는 반복 가능한(iterable) 객체의 모든 값에 지정된 함수를 누적적으로 적용하여 하나의 결과값을 만들어냅니다. 이 함수는 파이썬 표준 라이브러리인 functools 모듈에 포함되어 있으므로, 사용하기 전에 반드시 임포트해야 합니다.

예제 코드

from functools import reduce
import operator

def unpack_tuple(my_tup):
    return (reduce(operator.add, my_tup))

my_tuple = (['h', 'jane'], ['m', 'may'])

print("The tuple of list is")
print(my_tuple)
print("After unpacking, it is")
print(unpack_tuple(my_tuple))

실행 결과

The tuple of list is
(['h', 'jane'], ['m', 'may'])
After unpacking, it is
['h', 'jane', 'm', 'may']

코드 설명

  • functools 모듈의 reduceoperator 모듈을 환경에 임포트합니다.
  • 튜플을 매개변수로 받는 unpack_tuple 함수를 정의합니다.
  • 함수 내부에서는 reduce 메서드를 사용해 튜플 안의 모든 요소에 operator.add를 적용하여 리스트들을 하나로 합칩니다.
  • 리스트로 구성된 튜플을 정의하고 콘솔에 출력합니다.
  • 정의한 함수에 해당 튜플을 인자로 전달하여 호출합니다.
  • 연산 결과는 변수에 저장되며, 이 변수의 값이 최종적으로 콘솔에 출력됩니다.

이처럼 reduceoperator.add를 조합하면 별도의 반복문 없이도 리스트로 구성된 튜플을 손쉽게 하나의 리스트로 언패킹할 수 있습니다. 참고로 파이썬 3에서는 itertools.chain(*my_tuple)이나 리스트 컴프리헨션을 사용하는 방법도 널리 활용되니, 상황에 맞게 선택하시기 바랍니다.