- 슬라이싱 기본 형태: 리스트 [시작:끝]
- 시작 인덱스는 슬라이스 대상에 포함되지만 끝 인덱스는 포함 안 됨
- 슬라이싱 가독성을 위해 [0:끝] 보단 [:끝] 과 같이 0을 생략해야 함
- 슬라이싱에는 인덱스가 리스트 범위를 넘어서면 무시
- 그러나 인덱스로 접근 시 예외 발생
- 리스트를 슬라이싱한 결과 새로운 메모리에 적재, 원본 유지
- 대입에 슬라이스 사용 예제
print('이전:', a)
a[2:7] = [99, 22, 14]
print('이후:', a)
>>>
이전: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
이후: ['a', 'b', 99, 22, 14, 'h']
- 대입에 슬라이스 사용 시 원소 변경됨
- 대입에 슬라이스 사용 시 원소 개수 같을 필요 없음
- 슬라이스에 인덱스가 없는 경우 새로운 메모리에 동일한 리스트 복사됨
b = a[:]
assert b == a and b is not a
- 대입에 슬라이스 사용 및 시작,끝 인덱스 없는 경우 같은 리스트 객체를 가리킴
b = a
print('이전 a:', a)
print('이전 b:', b)
a[:] = [101, 102, 103]
assert a is b # 여전히 같은 리스트 객체임
print('이후 a:', a) # 새로운 내용이 들어 있음
print('이후 b:', b) # 같은 리스트 객체이기 때문에 a와 내용이 같음
>>>
이전 a: ['a', 'b', 47, 11, 22, 14, 'h']
이전 b: ['a', 'b', 47, 11, 22, 14, 'h']
이후 a: [101, 102, 103]
이후 b: [101, 102, 103]