문자열 word = "abc"라고 가정하고 1234번째 인덱스에 접근해보자
word = "abc"
print(word[1234123]) #"IndexError: string index out of range"
주어진 문자열의 인덱스 범위를 초과하는 인덱스를 사용하면 "IndexError: string index out of range" 오류가 발생한다.
하지만 new_word = word[:i] + word[i+1:]와 같이 범위를 초과하는 인덱스를 사용하는 경우에는 인덱스 오류가 발생하지 않는다. 파이썬 문자열 슬라이싱은 범위를 초과하더라도 오류를 발생시키지 않고 가능한 범위까지 슬라이싱하기 때문이다.
즉, word[:i]는 word의 첫 번째 문자부터 i-1번째 문자까지 슬라이싱된다.
word[i+1:]은 i+1번째 문자부터 마지막 문자까지 슬라이싱된다.
범위를 초과하는 경우에는 가능한 범위까지만 슬라이싱되고 나머지는 빈 문자열로 처리된다고 한다.
word[:5]와 word[5:]는 다음과 같이 동작한다.
print(word[:5]) # 출력: "abc" (범위 초과하지 않음)
print(word[5:]) # 출력: "" (빈 문자열, 범위 초과)
어떤상황에 활용할 수 있을까?
문자열 word에서 한 문자를 빼고 만들 수 있는 경우를 구할 때 쓸 수 있다!
#단어에서 i번째 문자 하나씩 없애서 선행자 전부 찾기
predecessor=[]
word="abc"
for i in range(len(word)):
#슬라이싱은 표현 가능한 범위 까지만 리턴한다
left=word[:i]
right=word[i+1:]
predecessor.append(left+right)
print(predecessor) #['bc','ac','ab']
'코딩테스트 > python' 카테고리의 다른 글
파이썬 알파벳 리스트 만들기 (0) | 2022.03.23 |
---|