Python 목록: 반복 중 항목 제거의 함정
항목을 동시에 제거하는 동시에 Python 목록을 반복하면 예기치 않은 동작이 발생할 수 있습니다. 주목할만한 예는 다음과 같습니다.
<code class="python">letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l'] for i in letters: letters.remove(i)</code>
이상하게도 최종 편지 인쇄에서는 다른 모든 항목만 제거되었음을 나타냅니다.
이상 현상의 이유
이 동작은 Python이 반복 중에 반복 가능 항목에 대한 수정을 처리하는 방식에서 비롯됩니다. 문서에는 반복되는 시퀀스를 수정하는 것이 일반적으로 안전하지 않다고 명시되어 있습니다. 특히 목록과 같은 변경 가능한 유형의 경우 더욱 그렇습니다.
이러한 관행은 향후 Python 빌드에서 정의되지 않은 동작과 잠재적인 변경으로 이어질 수 있습니다.
모든 항목을 제거하는 올바른 접근 방식
목록에서 모든 항목을 안전하게 제거하려면 다음 방법 중 하나를 사용하십시오.
조건부 항목 제거 처리
항목을 조건부로 제거하려면 [:] 슬라이스 구문을 사용하여 나열:
<code class="python">commands = ["ls", "cd", "rm -rf /"] for cmd in commands[:]: if "rm " in cmd: commands.remove(cmd)</code>
또는 필터 기능을 사용하여 원하지 않는 항목을 제외합니다:
<code class="python">commands = [cmd for cmd in commands if not is_malicious(cmd)]</code>
위 내용은 Python 목록을 반복할 때 항목 제거를 피해야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!