더북(TheBook)

이 반복 가능한 객체들을 변형시키고 싶은 유혹은 RuntimeError를 일찍 만나면 줄어들 겁니다. 그러나 순서가 있는 컬렉션(ordered collection)을 사용하는 경우에는 이러한 행운이 찾아오기 힘듭니다. 뭔가 잘못되어 가고 있지만, 오류는 훨씬 미묘하고 눈치채기 어렵습니다.

반복 가능한 객체를 변형했지만 오류가 발생하지 않음

>>> my_list = list("Mary had a little lamb!")
>>> for i, c in enumerate(my_list):
...     if c > "s":
...         del my_list[i]
...
>>> my_list
['M', 'a', 'r', ' ', 'h', 'a', 'd', ' ', 'a', ' ', 'l', 'i', 't', 'l', 'e', ' ', 'l', 'a', 'm', 'b', '!']
>>> "".join(my_list)
'Mar had a litle lamb!'
>>> my_ba = bytearray("Mary had a little lamb!", "utf8")
>>> for i, c in enumerate(my_ba):
...     if c > ord("s"):
...         del my_ba[i]
...
>>> my_ba
bytearray(b'Mar had a litle lamb!')
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.