더북(TheBook)

시작과 끝 인덱스가 없는 슬라이스에 대입하면 (새 리스트를 만들어내는 대신) 슬라이스가 참조하는 리스트의 내용을 대입하는(연산자 오른쪽에 있는) 리스트의 복사본으로 덮어 쓴다.

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]

기억해야 할 내용

• 슬라이싱할 때는 간결하게 하라. 시작 인덱스에 0을 넣거나, 끝 인덱스에 시퀀스 길이를 넣지 말라.

• 슬라이싱은 범위를 넘어가는 시작 인덱스나 끝 인덱스도 허용한다. 따라서 시퀀스의 시작이나 끝에서 길이를 제한하는 슬라이스(a[:20]이나 a[-20:])를 쉽게 표현할 수 있다.

• 리스트 슬라이스에 대입하면 원래 시퀀스에서 슬라이스가 가리키는 부분을 대입 연산자 오른쪽에 있는 시퀀스로 대치한다. 이때 슬라이스와 대치되는 시퀀스의 길이가 달라도 된다.