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

파이썬으로 숫자와 그 세제곱값을 튜플로 묶은 리스트 만들기

이 글에서는 주어진 문제를 해결하기 위한 접근 방법과 풀이 과정을 살펴보겠습니다.

문제 정의

리스트가 입력으로 주어졌을 때, 각 숫자와 그에 해당하는 세제곱값을 하나의 튜플로 묶어 새로운 튜플 리스트를 생성해야 합니다. 예를 들어 [1, 2, 3]이라는 리스트가 있다면, 결과는 [(1, 1), (2, 8), (3, 27)]과 같은 형태가 되어야 합니다.

해결 방법

이 문제는 파이썬의 리스트 컴프리헨션(list comprehension)을 활용하면 매우 간결하게 해결할 수 있습니다. 리스트의 각 요소를 순회하면서 원래 값과 pow() 함수로 계산한 세제곱값을 튜플 형태로 묶어주는 방식입니다.

예제 코드

list1 = [0, 1, 2, 4, 6]
res = [(val, pow(val, 3)) for val in list1]
# main
print(res)

실행 결과

[(0, 0), (1, 1), (2, 8), (4, 64), (6, 216)]

위 코드에서 pow(val, 3)은 val의 세제곱을 계산합니다. 물론 val ** 3 연산자를 사용해도 동일한 결과를 얻을 수 있습니다. 리스트 컴프리헨션은 반복문보다 코드가 짧고 가독성이 좋아 이런 변환 작업에 널리 사용됩니다.

대안: map 함수 활용

함수형 프로그래밍 스타일을 선호한다면 map()lambda를 조합해서도 같은 결과를 얻을 수 있습니다.

list1 = [0, 1, 2, 4, 6]
res = list(map(lambda x: (x, x ** 3), list1))
print(res)  # [(0, 0), (1, 1), (2, 8), (4, 64), (6, 216)]

정리

이 글에서는 리스트 컴프리헨션을 사용하여 주어진 리스트의 각 숫자와 그 세제곱값을 튜플로 묶어 새로운 리스트를 만드는 방법을 알아보았습니다. 몇 줄의 간단한 코드만으로 데이터를 원하는 구조로 손쉽게 변환할 수 있으며, 이러한 패턴은 데이터 전처리나 수치 계산 등 다양한 상황에서 유용하게 활용될 수 있습니다.