튜플로 구성된 리스트의 문자열 요소를 실수(float) 값으로 변환해야 하는 경우가 종종 있습니다. 이럴 때는 isalpha() 메서드와 float() 메서드를 함께 사용하고, 간단한 반복문으로 각 요소를 순회하며 처리하면 됩니다. 핵심 아이디어는 알파벳으로만 이루어진 문자열은 그대로 두고, 숫자 형태의 문자열만 실수로 변환하는 것입니다.
예제 코드
my_list = [("31", "py"), ("22", "226.65"), ("18.12", "17"), ("pyt", "12")]
print("The list is :")
print(my_list)
my_result = []
for index in my_list:
my_temp = []
for element in index:
if element.isalpha():
my_temp.append(element)
else:
my_temp.append(float(element))
my_result.append((my_temp[0], my_temp[1]))
print("The result is :")
print(my_result)실행 결과
The list is :
[('31', 'py'), ('22', '226.65'), ('18.12', '17'), ('pyt', '12')]
The result is :
[(31.0, 'py'), (22.0, 226.65), (18.12, 17.0), ('pyt', 12.0)]코드 설명
숫자와 문자열이 섞여 있는 튜플들의 리스트를 정의하고 콘솔에 출력합니다.
변환 결과를 담을 빈 리스트를 선언합니다.
바깥 반복문으로 각 튜플을, 안쪽 반복문으로 튜플의 각 요소를 순회하며 처리합니다.
isalpha()함수를 사용해 해당 요소가 알파벳으로만 이루어져 있는지 확인합니다.조건이 참이면 요소를 그대로 추가하고, 거짓이면
float()으로 변환한 뒤 추가합니다.처리가 끝난 튜플을 결과 리스트에 저장하고, 최종 결과를 콘솔에 출력합니다.
더 견고한 대안: try/except 활용
isalpha() 방식은 알파벳 여부만 판별하기 때문에, 특수문자나 공백이 섞인 입력에서는 오류가 발생할 수 있습니다. 다음과 같이 try/except 구문을 사용하면 더 안전하게 처리할 수 있습니다.
def convert_to_float(value):
try:
return float(value)
except ValueError:
return value
my_list = [("31", "py"), ("22", "226.65"), ("18.12", "17"), ("pyt", "12")]
my_result = [tuple(convert_to_float(el) for el in tup) for tup in my_list]
print(my_result)이 방식은 숫자로 변환 가능한 값만 실수로 바꾸고, 나머지는 원본 그대로 유지하므로 실무에서 더 널리 사용되는 패턴입니다.