Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python – 문자열 리스트에서 증분 슬라이스 연결하기

개요

문자열 리스트에서 각 요소의 앞부분을 점진적으로 잘라내어(증분 슬라이스) 하나의 문자열로 이어 붙여야 하는 경우가 있습니다. 이럴 때는 별도의 복잡한 라이브러리 없이 간단한 반복문과 리스트 슬라이싱만으로 손쉽게 구현할 수 있습니다.

핵심 아이디어는 다음과 같습니다. 리스트를 순회하면서 인덱스가 증가할 때마다 해당 요소의 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

이 방법은 가독성이 뛰어날 뿐만 아니라, 내부적으로 한 번에 문자열을 합치기 때문에 대용량 데이터에서도 더 효율적으로 동작합니다.