Python 프로그래밍을 하다 보면 튜플(tuple)에 담긴 숫자 요소들을 하나의 부동 소수점(float) 값으로 합쳐야 하는 경우가 있습니다. 예를 들어 (7, 8)이라는 튜플을 7.8이라는 실수로 바꾸는 것처럼요. 이럴 때는 'join' 메서드, 'float' 메서드, 'str' 메서드 그리고 제너레이터 표현식(generator expression)을 함께 활용하면 간단하게 처리할 수 있습니다.
핵심 개념 정리
제너레이터(Generator)란?
제너레이터는 이터레이터(iterator)를 손쉽게 만들 수 있는 방법입니다. 별도의 클래스를 작성하지 않아도 내부적으로 __iter__()와 __next__() 메서드가 자동으로 구현되며, 내부 상태를 스스로 추적합니다. 더 이상 반환할 값이 없으면 'StopIteration' 예외를 발생시켜 반복이 종료됩니다.
float 메서드와 str 메서드
float() 함수는 주어진 값을 부동 소수점 자료형으로 변환하고, str() 함수는 주어진 값을 문자열 자료형으로 변환합니다. 두 함수를 조합하면 튜플의 각 요소를 문자열로 바꾼 뒤 소수점 형태로 연결하고, 최종적으로 실수형으로 변환할 수 있습니다.
예제 코드
다음은 튜플을 실수 값으로 변환하는 전체 과정을 보여주는 예제입니다.
my_tuple_1 = (7, 8)
print("첫 번째 튜플은 : ")
print(my_tuple_1)
my_result = float('.'.join(str(elem) for elem in my_tuple_1))
print("튜플을 실수로 변환한 결과 : ")
print(my_result)
실행 결과
첫 번째 튜플은 : (7, 8) 튜플을 실수로 변환한 결과 : 7.8
코드 설명
- 먼저 튜플
(7, 8)을 정의하고 콘솔에 출력합니다. - 제너레이터 표현식을 사용해 튜플의 각 요소를
str()로 문자열로 변환한 후, '.' 구분자와join()메서드를 이용해 두 요소를 소수 형태의 문자열 "7.8"로 연결합니다. - 연결된 문자열을
float()함수로 실수 자료형으로 변환한 뒤 그 결과를 변수에 할당합니다. - 최종 변환된 실수 값을 콘솔에 출력합니다.
이 방법은 튜플의 요소들이 모두 한 자리 또는 여러 자리 숫자일 때 유용합니다. 다만 요소 개수가 많거나 소수점 이하 자릿수가 긴 경우에는 문자열 연결 방식이 의도한 숫자 형식과 일치하는지 반드시 확인해야 합니다.