개요
문자열 리스트에서 각 요소의 앞부분을 점진적으로 잘라내어(증분 슬라이스) 하나의 문자열로 이어 붙여야 하는 경우가 있습니다. 이럴 때는 별도의 복잡한 라이브러리 없이 간단한 반복문과 리스트 슬라이싱만으로 손쉽게 구현할 수 있습니다.
핵심 아이디어는 다음과 같습니다. 리스트를 순회하면서 인덱스가 증가할 때마다 해당 요소의 index + 1번째 문자까지 잘라낸 뒤, 결과 문자열에 계속 연결하는 것입니다.
예제 코드
my_list = ['pyt', 'is', 'all', 'fun']
print("The list is :")
print(my_list)
my_result = ''
for index in range(len(my_list)):
my_result += my_list[index][:index + 1]
print("The result is :")
print(my_result)실행 결과
The list is : ['pyt', 'is', 'all', 'fun'] The result is : pisallfun
코드 설명
먼저 문자열 요소로 구성된 리스트를 정의하고 콘솔에 출력합니다.
연결 결과를 담기 위한 빈 문자열(
'')을 하나 생성합니다.range(len(my_list))를 사용해 리스트의 인덱스를 순서대로 순회하면서, 각 요소를[:index + 1]로 슬라이싱합니다. 즉, 첫 번째 요소는 1글자, 두 번째 요소는 2글자, 세 번째 요소는 3글자씩 잘려나갑니다.슬라이싱된 조각들을
+=연산자로 결과 변수에 계속 연결한 뒤, 최종 결과를 콘솔에 출력합니다.
동작 과정 상세
인덱스 0:
'pyt'[:1]→'p'인덱스 1:
'is'[:2]→'is'인덱스 2:
'all'[:3]→'all'인덱스 3:
'fun'[:4]→'fun'
이 조각들이 차례대로 이어지면서 최종적으로 'pisallfun'이라는 문자열이 만들어집니다.
참고: join()을 활용한 개선 방법
반복문 안에서 문자열을 +=로 연결하는 방식은 코드가 길어질수록 성능이 떨어질 수 있습니다. 파이썬다운(Pythonic) 방식으로는 제너레이터 표현식과 join() 메서드를 조합하는 것이 좋습니다.
my_result = ''.join(word[:i + 1] for i, word in enumerate(my_list)) print(my_result) # pisallfun
이 방법은 가독성이 뛰어날 뿐만 아니라, 내부적으로 한 번에 문자열을 합치기 때문에 대용량 데이터에서도 더 효율적으로 동작합니다.