본문 바로가기

프로그래밍/파이썬3

deque(collection) Deques support thread-safe, memory efficient appends and pops from either side of the deque with approximately the same O(1) performance in either direction. Though list objects support similar operations, they are optimized for fast fixed-length operations and incur O(n) memory movement costs for pop(0) and insert(0, v) operations which change both the size and position of the underlying data r.. 2020. 12. 12.
is vs == 파이썬에서 is를 사용할 때는 비교 대상이 같은 객체를 가리킬 때 True가 된다. 같은 객체를 가리킨다는 건 결국 두 객체는 같은 메모리 주소에 위치한다는 말이고, 그 말은 가령 a = [1,2,3] b = a 로 할당을 했을 때, b[0] = 4로 변경하면 a[0] = 4로 변경된다. 하지만 동일한 값을 갖는 객체라도 객체 자체가 다르다면.. 가령 위의 a를 c = list(a) 로 새로운 리스트 객체를 만들어서 사용한다면 a와 c는 다른 주소에 저장될 것이기 때문에 a is c 가 false가 될 것이다. 하지만 == 는 내부의 값들을 비교해서 같으면 True를 반환하기 때문에 a == c가 된다. 아마도 코드 흐름에서 앞에서 객체를 만든 후 뒤에서 그 앞에서 만든 객체가 맞는지? 확인할 때 쓸 수.. 2020. 12. 12.
Dictionary changed size during iteration(feat. defaultdict) 상황: for loop에서 딕셔너리를 iteration하려고 합니다. 그래서 dict.keys() 사용했습니다. 그런데 다음과 같은 에러가 발생했습니다. 구글링을 해본 결과.. 1. keys는 iterable을 반환한다고 합니다. 즉, iteration을 진행하는 과정에서 iterable의 크기가 변경이 되면 위와 같은 에러가 발생합니다. 구글링한 대부분의 케이스에서는 iteration을 하는 중에 pop을 하는 과정 혹은 key를 제거하는 로직이 포함되어 있었는데 저는 그런 로직은 없었습니다. 한 가지 제 케이스가 특이했던 부분은 defaultdict를 dictionary로 사용했던 점입니다. defaultdict는 key가 있으면 그 key에 대해 operation을 수행하고, 없으면 지정한 defa.. 2020. 12. 5.
반응형