튜플로 이루어진 리스트에서 특정 열(K번째 열)에 해당하는 값들을 모두 곱해야 하는 경우, 간단한 리스트 컴프리헨션(list comprehension)과 반복문을 활용하면 손쉽게 해결할 수 있습니다.
먼저 기본 개념부터 짚고 넘어가겠습니다. 튜플(tuple)은 불변(immutable) 자료형입니다. 즉, 한 번 정의된 값은 인덱스를 통해 접근하더라도 변경할 수 없으며, 변경을 시도하면 오류가 발생합니다. 이러한 읽기 전용 특성 덕분에 데이터를 안전하게 보호해야 할 때 유용하게 사용됩니다.
반면 리스트(list)는 정수, 실수, 문자열 등 서로 다른 자료형의 값을 함께 저장할 수 있는 가변(mutable) 자료형입니다.
튜플 리스트(list of tuple)란 말 그대로 여러 개의 튜플이 하나의 리스트 안에 담겨 있는 구조를 의미합니다.
리스트 컴프리헨션은 리스트를 순회하면서 원하는 연산을 수행할 수 있게 해주는 축약형 문법으로, 코드를 더 간결하고 가독성 좋게 만들어 줍니다.
아래는 실제 동작 예시입니다.
예제 코드
def prod_compute(my_val):
my_result = 1
for elem in my_val:
my_result *= elem
return my_result
my_list = [(51, 62, 75), (18, 39, 25), (81, 19, 99)]
print("The list is : ")
print(my_list)
print("The value of 'K' has been initialized")
K = 2
my_result = prod_compute([sub[K] for sub in my_list])
print("The product of the 'K'th Column of the list of tuples is : ")
print(my_result)실행 결과
The list is : [(51, 62, 75), (18, 39, 25), (81, 19, 99)] The value of 'K' has been initialized The product of the 'K'th Column of the list of tuples is : 185625
코드 설명
prod_compute라는 이름의 함수를 정의하며, 이 함수는 하나의 매개변수를 받습니다.- 함수 내부에서 결과값을 저장할 변수를 1로 초기화한 뒤, 매개변수로 전달받은 값을 반복문으로 순회합니다.
- 순회 중인 각 요소를 결과 변수에 계속 곱해 나갑니다.
- 모든 곱셈이 끝나면 최종 결과값을 반환(return)합니다.
- 튜플 3개로 구성된 리스트를 정의하고, 콘솔에 출력하여 확인합니다.
- K 값을 2로 설정한 후, 리스트 컴프리헨션
[sub[K] for sub in my_list]를 통해 각 튜플의 세 번째 요소(인덱스 2)만 추출합니다. 즉,(75, 25, 99)가 됩니다. - 추출된 값들을
prod_compute함수에 전달하여 곱을 계산하고, 그 결과인 185625(75 × 25 × 99)를 콘솔에 출력합니다.
이처럼 리스트 컴프리헨션으로 원하는 열의 값만 추출하고, 별도의 곱셈 함수로 전달하는 방식은 코드가 짧고 명확하여 다양한 데이터 처리 상황에서 활용도가 높습니다.