리스트에 있는 숫자들을 앞뒤 절반으로 나누어 동일 자릿수(equi-digit) 튜플을 구성해야 하는 경우, 정수 나눗셈 연산자인 //와 리스트(문자열) 슬라이싱을 활용하면 간단하게 해결할 수 있습니다.
예제 코드
아래 예제는 주어진 리스트의 각 숫자를 중간 인덱스를 기준으로 두 부분으로 분리하여 튜플로 변환하는 과정을 보여줍니다.
my_list = [5613, 1223, 966143, 890, 65, 10221]
print("The list is :")
print(my_list)
my_result = []
for sub in my_list:
mid_index = len(str(sub)) // 2
element_1 = str(sub)[:mid_index]
element_2 = str(sub)[mid_index:]
my_result.append((int(element_1), int(element_2)))
print("The resultant list is :")
print(my_result)
실행 결과
The list is : [5613, 1223, 966143, 890, 65, 10221] The resultant list is : [(56, 13), (12, 23), (966, 143), (8, 90), (6, 5), (10, 221)]
코드 설명
숫자들이 담긴 리스트를 정의하고 콘솔에 출력합니다.
결과를 저장할 빈 리스트를 하나 준비합니다.
리스트를 반복(iteration)하면서 각 숫자를 문자열로 변환한 뒤, 전체 길이에
//연산자를 적용해 중간 인덱스를 계산합니다.슬라이싱을 이용해 중간 인덱스를 기준으로 앞부분과 뒷부분의 값을 각각 추출합니다.
추출된 두 값은 별도의 변수에 저장됩니다.
두 값을 다시 정수(int)로 변환한 후, 튜플 형태로 결과 리스트에 추가(append)합니다.
모든 처리가 끝나면 최종 결과 리스트를 콘솔에 출력합니다.
자릿수가 홀수인 경우의 동작
// 연산자는 소수점 이하를 버리는 정수 나눗셈이므로, 자릿수가 홀수인 숫자도 문제없이 처리됩니다. 예를 들어 890은 세 자리 숫자이므로 중간 인덱스가 3 // 2 = 1이 되어 (8, 90)처럼 앞부분은 한 자리, 뒷부분은 두 자리로 나뉩니다. 이처럼 중간 인덱스 계산 방식 덕분에 어떤 길이의 숫자든 안정적으로 분할할 수 있습니다.