더북(TheBook)

거의 무의미하다 볼 수 있는 이 작은 코드는 일부 조건을 충족하는 요소를 대상으로 선택적인 작업을 수행합니다. 문자를 개별적으로 출력하는 대신, 조건을 만족하는 요소를 컬렉션으로 따로 모으는 작업은 확실히 의미가 있습니다. 이러한 접근 방식은 일반적으로 모든 변경 문제에 대한 완벽한 해결책입니다. 항상 사용을 염두에 두는 것이 좋습니다.

이제 불변 문자열이 아닌 가변 컬렉션을 사용하여 유사한 작업을 해 보겠습니다.

반복 가능한 객체의 변형에 따른 빠른 오류 발생

>>> my_set
{'r', 'M', 'm', 'a', 'e', 'h', 'l', 't', 'd', 'b', '!', ' ', 'i'}
>>> my_set = set("Mary had a little lamb!")
>>> for c in my_set:
...     if c > "s":
...         my_set.discard(c)
...
Traceback (most recent call last):
[...]
RuntimeError: Set changed size during iteration
>>> my_dict = {c:ord(c) for c in "Mary had a little lamb!"}
>>> for c in my_dict:
...     if c > "s":
...         del my_dict[c]
...
Traceback (most recent call last):
[...]
RuntimeError: dictionary changed size during iteration
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.