Skip to content

Latest commit

 

History

History
48 lines (39 loc) · 1.52 KB

BetterWay11.md

File metadata and controls

48 lines (39 loc) · 1.52 KB

11. 시퀀스를 슬라이싱하는 방법을 익혀라

슬라이싱

  • 슬라이싱 기본 형태: 리스트 [시작:끝]
  • 시작 인덱스는 슬라이스 대상에 포함되지만 끝 인덱스는 포함 안 됨
  • 슬라이싱 가독성을 위해 [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]