리스트에 담긴 여러 개의 정수를 하나의 연속된 숫자열로 이어 붙인 뒤, K자리씩 끊어서 새로운 요소로 재구성해야 하는 경우가 있습니다. 파이썬에서는 리스트 컴프리헨션(list comprehension)과 append 메서드를 활용하면 아주 간단하게 처리할 수 있습니다.
예제 코드
아래는 실제 구현 예시입니다.
my_list = [231, 67, 232, 1, 238, 31, 793]
print("The list is :")
print(my_list)
K = 3
print("The value of K is ")
print(K)
temp = ''.join([str(ele) for ele in my_list])
my_result = []
for index in range(0, len(temp), K):
my_result.append(int(temp[index: index + K]))
print("The resultant list is :")
print(my_result)
실행 결과
The list is :
[231, 67, 232, 1, 238, 31, 793]
The value of K is
3
The resultant list is :
[231, 672, 321, 238, 317, 93]
코드 설명
정수 요소를 가진 리스트를 정의하고 콘솔에 출력합니다.
K 값을 초기화한 뒤 화면에 표시합니다. 예제에서는 K = 3이므로 세 자리씩 끊게 됩니다.
리스트 컴프리헨션으로 리스트의 모든 요소를 순회하며 문자열(
str) 타입으로 변환하고,join()메서드로 구분자 없이 하나의 문자열로 이어 붙입니다. 그 결과 "23167232123831793"이라는 하나의 긴 문자열이 만들어집니다.이렇게 만들어진 문자열은 변수
temp에 저장됩니다.결과를 담을 빈 리스트
my_result를 생성합니다.range(0, len(temp), K)를 사용해 인덱스를 K 간격으로 순회하면서,temp[index: index + K]슬라이싱으로 문자열을 K자리씩 잘라낸 후int()로 다시 정수형으로 변환하여 결과 리스트에 추가(append)합니다.문자열의 길이가 K의 배수가 아니라면, 마지막 조각은 남은 자릿수만큼만 잘려 들어갑니다. 위 예제에서는 마지막에 두 자리 숫자인 93이 그대로 포함되었습니다.
최종 결과 리스트가 콘솔에 출력되며 프로그램이 종료됩니다.
동작 과정 한눈에 보기
위 예제의 흐름을 단계별로 정리하면 다음과 같습니다.
- 원본 리스트:
[231, 67, 232, 1, 238, 31, 793] - 모든 요소를 이어 붙인 문자열:
"23167232123831793" - 3자리씩 분할:
[231, 672, 321, 238, 317, 93]