리스트에 저장된 여러 문자열에서 각각 특정 범위의 부분 문자열만 추출해야 하는 경우가 종종 있습니다. 이럴 때 리스트를 반복(iteration)하면서 : 연산자와 슬라이싱(slicing) 기법을 함께 사용하면 원하는 범위의 문자열을 간단하게 얻을 수 있습니다.
예제 코드
다음은 실제 동작 과정을 보여주는 예시입니다.
my_list = ["Hi", "there", "how", 'are', 'you']
print("The list is : ")
print(my_list)
m, n = 2, 4
my_result = []
for elem in my_list:
my_result.append(elem[m : n + 1])
print("The sliced strings are : " )
print(my_result)실행 결과
The list is : ['Hi', 'there', 'how', 'are', 'you'] The sliced strings are : ['', 'ere', 'w', 'e', 'u']
동작 원리
먼저 문자열 요소들로 이루어진 리스트를 정의하고, 콘솔에 출력하여 확인합니다.
슬라이싱 범위를 결정할 두 변수
m과n에 시작 인덱스와 끝 인덱스 값을 할당합니다.결과를 저장할 빈 리스트를 하나 생성합니다.
원본 리스트를 반복하면서 각 문자열 요소를
m부터n까지 슬라이싱한 뒤, 빈 리스트에 순서대로 추가(append)합니다.이 과정에서
:연산자와 함께 변수로 지정된 인덱스 범위를 사용해 문자열의 일부분에 접근합니다.모든 처리가 끝나면 최종 결과를 콘솔에 출력합니다.
슬라이싱 문법 참고
파이썬에서 문자열[m : n + 1]은 인덱스 m부터 n까지의 문자를 포함합니다. 슬라이싱의 끝 인덱스는 미포함(exclusive)이기 때문에, n번째 문자까지 추출하려면 n + 1을 지정해야 합니다. 위 예제에서 첫 번째 요소 'Hi'는 길이가 2로 범위보다 짧아 빈 문자열 ''이 반환되는 점도 눈여겨볼 만합니다.
더 간결한 방법: 리스트 컴프리헨션
동일한 작업은 리스트 컴프리헨션(list comprehension)을 사용하면 한 줄로 처리할 수 있어 코드가 더욱 간결해집니다.
my_result = [elem[m : n + 1] for elem in my_list]
반복문 대신 컴프리헨션을 활용하면 가독성과 성능 면에서 모두 유리하므로, 실무에서는 이 방식을 권장합니다.