파이썬(Python)은 데이터를 손쉽게 다른 자료형으로 변환할 수 있는 강력한 기능을 제공합니다. 문자열을 숫자 값으로 바꾸거나, 리스트·튜플·셋 같은 컨테이너 타입끼리 서로 변환하는 등 다양한 상황에서 전용 함수들을 활용할 수 있습니다.
이 글에서는 파이썬에서 자주 사용되는 형 변환(Type Conversion) 방법을 예제 코드와 함께 하나씩 살펴보겠습니다.
문자열을 숫자형으로 변환하기
문자열 객체를 숫자 객체로 변환하려면 int(), float() 같은 함수를 사용합니다.
int() 함수는 숫자 형태의 문자열을 10진수 정수로 변환합니다. 기본 진법(base)은 10이며, 두 번째 인자로 진법을 지정하면 해당 진법의 문자열을 10진수 정수로 변환할 수도 있습니다.
마찬가지로 float() 함수는 소수점이 포함된 문자열을 부동소수점(float) 값으로 변환해 줍니다.
예제 코드
str_number = '56' print(int(str_number)) #기본 진법은 10진수 print(int(str_number, 16)) #16진수 문자열을 10진수로 변환 print(int(str_number, 12)) #12진수 문자열을 10진수로 변환 str_number = '25.897' print(float(str_number)) #문자열을 부동소수점 값으로 변환
실행 결과
56 86 66 25.897
참고로, 변환 대상 문자열이 유효한 숫자가 아니면 ValueError가 발생하므로, 외부 입력값을 변환할 때는 try-except 문으로 예외 처리를 해주는 것이 안전합니다.
문자 → ASCII 값 변환과 진법 변환
문자열은 본질적으로 문자들의 집합입니다. 그런데 파이썬에서는 문자의 ASCII 값을 직접 얻을 수 없으며, ord() 메서드를 사용해야 문자를 해당 ASCII(유니코드) 값으로 변환할 수 있습니다.
또한 hex(), oct(), bin() 메서드를 사용하면 10진수를 각각 16진수, 8진수, 2진수 표현으로 변환할 수 있습니다.
예제 코드
print('"G"의 ASCII 값: ' + str(ord('G')))
print('254의 16진수 값: ' + str(hex(254)))
print('62의 8진수 값: ' + str(oct(62)))
print('56의 2진수 값: ' + str(bin(56)))
실행 결과
"G"의 ASCII 값: 71 254의 16진수 값: 0xfe 62의 8진수 값: 0o76 56의 2진수 값: 0b111000
반대로 ASCII 값을 다시 문자로 되돌리려면 chr() 함수를 사용하면 됩니다. 예를 들어 chr(71)은 'G'를 반환합니다.
컨테이너(자료구조) 간 변환
파이썬에는 리스트(list), 튜플(tuple), 셋(set) 등 다양한 컨테이너 타입이 존재합니다. list(), tuple(), set() 같은 함수를 사용하면 한 컨테이너 타입을 다른 타입으로 자유롭게 변환할 수 있습니다.
특히 셋(set)은 중복 요소를 허용하지 않기 때문에, 리스트를 셋으로 변환하면 중복 값이 자동으로 제거되는 효과도 얻을 수 있습니다.
예제 코드
my_list = [10, 20, 30, 40, 50]
my_set = {10, 10, 20, 30, 20, 50, 20}
print('리스트 → 튜플: ' + str(tuple(my_list)))
print('리스트 → 셋: ' + str(set(my_list)))
print('셋 → 리스트: ' + str(list(my_set)))
실행 결과
리스트 → 튜플: (10, 20, 30, 40, 50)
리스트 → 셋: {40, 10, 50, 20, 30}
셋 → 리스트: [10, 20, 50, 30]
셋은 순서가 없는 자료구조이므로, 셋을 리스트로 변환했을 때 원래 입력 순서와 출력 순서가 다를 수 있다는 점에 유의해야 합니다.
복소수(Complex Number) 변환
파이썬에는 복소수를 다루는 complex 클래스가 내장되어 있습니다. 이를 활용하면 실수부와 허수부 두 개의 정수를 하나의 복소수로 변환할 수 있습니다.
예제 코드
my_complex = complex(10, 5) #복소수로 변환 print(my_complex)
실행 결과
(10+5j)
튜플을 딕셔너리로 변환하기
튜플(tuple)은 파이썬에서 가장 중요한 컨테이너 중 하나로, 순서가 있는 데이터를 저장할 때 사용됩니다. 파이썬에서는 두 개의 값을 가진 튜플들로 구성된 튜플 객체를 딕셔너리(dictionary) 객체로 변환할 수 있으며, 이때 dict() 메서드를 사용합니다.
첫 번째 요소는 키(key)로, 두 번째 요소는 값(value)으로 매핑됩니다.
예제 코드
my_tuples = (('Tiger', 4), ('Cat', 6), ('Dog', 8), ('Elephant', 10))
my_dict = dict(my_tuples)
print(my_dict)
실행 결과
{'Tiger': 4, 'Elephant': 10, 'Dog': 8, 'Cat': 6}
단, 딕셔너리로 변환하려면 각 튜플이 반드시 정확히 두 개의 요소(키-값 쌍)를 가져야 하며, 그렇지 않으면 오류가 발생합니다.