✅ 파이썬(Python) 집합(Set) 자료구조와 관련된 에러
( 딕셔너리와 deque 자료구조에서도 해당된다. )
# wrong
s = {(0, 0, 0, 1), (0, 0, 1, 0), (0, 0, 0, -1), (0, -1, 0, 0), (0, 0, -1, 0), (0, 1, 0, 0)}
for i in s:
re_r = list(i[2:])+(list(i[:2]))
if tuple(re_r) in routes:
s.remove(i)

👉 집합(또는 딕셔너리, deque)을 순회할 때, 집합(또는 딕셔너리, deque) 크기가 변경되면 발생한다.
👉 파이썬 3.x 에서는 리스트를 list(a) 형태로 복사하여 해결한다.
# correct
s = {(0, 0, 0, 1), (0, 0, 1, 0), (0, 0, 0, -1), (0, -1, 0, 0), (0, 0, -1, 0), (0, 1, 0, 0)}
for i in list(s):
re_r = list(i[2:])+(list(i[:2]))
if tuple(re_r) in routes:
s.remove(i)