문자열의 인덱싱과 슬라이싱
인덱싱 - Indexing syntax
python에 있는 sequential type의 structure들은 인덱싱과 슬라이싱이 가능하다.
문자열도 그 중 하나이다. python은 0을 base로 인덱싱한다.
따라서, 문자열의 첫 문자가 index '0'이 된다.
문자열에 인덱스로 접근하는 방법은 아래와 같다.
str = "abc123!"
str[0]
>> a
str[6]
>> !
str[7]
str[len(str)]
>> IndexError: string index out of range
다른 언어들과 마찬가지로 범위에 벗어날 경우 out of range는 error가 발생하기 때문에
마지막 index에 접근하기 위해서는 len(str) - 1 을 사용해야한다.
슬라이싱 - slicing syntax
문자열 슬라이싱(slicing) 방법은
str[start:end:step]를 지정해주면 된다.
start idx를 명시하지 않으면 0부터 시작한다.
[:end:step] == [0:end:step]
end idx를 명지하지 않으면 마지막 index, 즉 끝까지 가져온다.
[0::step] == [0:last_idx:step]
step은 따로 명시하지 않으면 1씩 증가한다고 보면 된다.
step을 사용하면 start:end 범위 내에서 각 n번째 요소를 가져와 사용할 수 있다.
아래 예시를 보자.
str = "abc123!"
# 문자열 처음부터 끝까지
str[:]
str[0:7]
str[:7]
str[:len(str)]
>> abc123!
# step 2 씩 가져오기
str[::2]
str[0:7:2]
>> ac2!
# 문자열 거꾸로 가져오기
str[::-1]
>> !321cba
문자열의 마지막 index에 접근하기 위해서는 아래와 같이 Negative indexing 방식을 사용할 수 있다.
str = "abc123!"
# 마지막 문자
str[-1:]
str[6:7]
>> !
인덱싱과 슬라이싱이 가능한 python의 sequence type
# examples of sequences
# a list
[0, None, -2, 1]
# a string
"hello out there"
# a tuple
("a", False, 0, 1)
# a NumPy array
numpy.ndarray([0.2, 0.4, 0.6, 0.8])