Shallow copy vs Deep copy
파이썬에서의 assignment operation (=)은 객체의 복사본을 만들지 않습니다. 메모리 상에 존재하는 하나의 객체에 대해 다른 변수이름을 binding 하는 것 뿐이죠. 따라서 리스트와 같은 변경 가능한 객체에 대해서 b=a 를 수행하고 a의 원소값을 변경하면 b의 값 또한 마찬가지로 변경됩니다. >>> a = [1,2,3,4] >>> b = a a[3] = 100 >>> a [1, 2, 3, 100] >>> b [1, 2, 3, 100] 하지만 문자열, 정수와 같은 불변 객체에 대해서는 적용되지 않습니다. a의 값을 다른 값으로 변경하면 a는 메모리 상의 다른 객체를 참조하고 b는 그대로 원래 객체를 참조합니다. >>> a = 10 >>> b = a >>> b 10 >>> a = 'abc'..
List Subtraction
두 개의 리스트 $x, y$가 있을 때 $x$ 리스트 원소 중 $y$ 리스트에 속한 원소를 제거하고 싶습니다. 예를 들면 다음과 같은 빼기 연산 (-)를 수행하고 싶은겁니다. >>> x = [1,2,3,4,5,6,7,8,9,0] >>> x [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] >>> y = [1,3,5,7,9] >>> y [1, 3, 5, 7, 9] >>> x - y # (should return [2,4,6,8,0]) 하지만 리스트 자료구조에 대해서는 빼기 연산 (-)를 지원하지 않으므로 다음과 같은 에러가 발생합니다. Traceback (most recent call last): File "", line 1, in TypeError: unsupported operand type(s)..