7. 시퀀스 간 형 변환 (Type Conversion)
파이썬의 시퀀스 자료형들은 서로 내부 구조(배열)가 유사하기 때문에, 필요에 따라 문자열을 리스트로 바꾸거나 리스트를 튜플로 바꾸는 등 형 변환(Type Casting)이 매우 자유롭습니다.
이때 기존 객체가 변환되는 것이 아니라, 변환된 타입의 완전히 새로운 인스턴스가 생성되어 반환됨을 기억해야 합니다.
7.1 문자열을 리스트나 튜플로 분해하기
문자열을 리스트 list() 나 튜플 tuple() 생성자에 넣으면, 문자열 덩어리가 유지되는 것이 아니라 각 글자 단위나 공백 단위 하나하나가 시퀀스의 개별 원소로 잘게 쪼개집니다.
text = "파이썬 코딩"
# 1. 문자열을 리스트로 역분해
char_list = list(text)
print(char_list)
# ['파', '이', '썬', ' ', '코', '딩'] (공백도 리스트의 한 자리를 차지합니다)
# 2. 리스트를 완벽히 굳혀서 불변 튜플로 만들기
safe_tuple = tuple(char_list)
print(safe_tuple)
# ('파', '이', '썬', ' ', '코', '딩')
7.2 컬렉션을 문자열로 강제 변환할 때의 주의점
초보자들이 가장 흔히 실수하는 부분입니다. 숫자 배열(리스트)을 그대로 합쳐서 하나의 긴 문장으로 만들려고 str() 생성자에 리스트를 통째로 넘기면 의도와 전혀 다른 결과가 나옵니다.
num_list = [1, 2, 3, 4]
# 잘못된 변환 방법 (리스트 외형 그 자체가 문자열로 변환됨)
wrong_str = str(num_list)
print(wrong_str) # "[1, 2, 3, 4]" (대괄호와 쉼표 기호까지 모두 문자가 됨)
print(wrong_str[0]) # "["
print(wrong_str[1]) # "1"
[!CAUTION] 시퀀스 안에 있는 원소들을 예쁘게 이어 붙여 하나의 문장으로 만들고 싶다면,
str()을 쓸 것이 아니라 반드시 문자열의"".join(리스트)메서드를 사용해야 합니다!
서브목차