ㅅㅇ

[python] RuntimeError: deque mutated during iteration. 본문

SW_STUDY/TroubleShooting

[python] RuntimeError: deque mutated during iteration.

SO__OS 2022. 6. 10. 00:17

 

아래 코드를 작성하다가 본 오류가 발생하였다.

for i in jdays:
    if cnt < i:
        break 
    c += 1
    jdays.popleft()

 

오류가 뜨는 이유는

deque가 반복문을 돌릴 때 deque의 내용이 변질되거나 사이즈가 변경될 때 뜨는 오류다.

 

 

해결법은 새로 담아주면 된다.

 

(1) list에 담아 리스트로 새로 만들기

for i in list(jdays):
    if cnt < i:
        break 
    c += 1
    jdays.popleft()

 

 

(2) copy를 사용하여 복사본으로 사용하기

   - 모듈을  import 해줘야 함. import copy

import copy

for i in copy.deepcopy(jdays):
    if cnt < i:
        break 
    c += 1
    jdays.popleft()