더북(TheBook)

리스트를 슬라이싱한 결과는 완전히 새로운 리스트이며, 원래 리스트에 대한 참조는 그대로 유지된다. 슬라이싱한 결과로 얻은 리스트를 변경해도 원래 리스트는 바뀌지 않는다.

b = a[3:]
print('이전:', b)
b[1] = 99
print('이후:', b)
print('변화 없음:', a)

>>>
이전: ['d', 'e', 'f', 'g', 'h']
이후: ['d', 99, 'f', 'g', 'h']
변화 없음: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']

대입에 슬라이스를 사용하면 원본 리스트에서 지정한 범위에 들어 있는 원소를 변경한다. 언패킹 대입(예를 들면, a, b = c[:2])과 달리 슬라이스 대입에서는 슬라이스와 대입되는 리스트의 길이가 같을 필요가 없다(언패킹 대입은 Better way 6: ‘인덱스를 사용하는 대신 대입을 사용해 데이터를 언패킹하라’ 참고). 대입된 슬라이스 이전이나 이후에 있던 원소들은 그대로 유지된다. 다음 코드에서는 리스트에 지정한 슬라이스 길이보다 대입되는 배열의 길이가 더 짧기 때문에 리스트가 줄어든다.

print('이전:', a)
a[2:7] = [99, 22, 14]
print('이후:', a)

>>>
이전: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
이후: ['a', 'b', 99, 22, 14, 'h']
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.