Python에서 목록을 반복하는 동안 목록에서 항목을 제거하면 이상한 결과가 발생합니다.

WBOY
풀어 주다: 2024-02-09 10:10:04
앞으로
676명이 탐색했습니다.

在 Python 中迭代列表时从列表中删除项目时出现奇怪的结果

질문 내용

다음 코드가 있습니다:

으아악

그러나 내가 얻은 결과는 다음과 같습니다.

[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]

물론 결과에 20 이하의 숫자는 없기를 바랍니다. 삭제하면서 뭔가 잘못한 것 같습니다.


정답


목록을 반복하면서 수정하고 있습니다. 즉, 처음 루프를 통과할 때 i == 1,因此1被从列表中删除。然后for循环转到列表中的第二项,它不是2,而是3!然后将其从列表中删除,然后 for 循环继续执行列表中的第三项,现在是 5。依此类推。也许这样更容易可视化,用 ^ 指向 i의 값은 다음과 같습니다.

으아악

다음은 목록의 초기 상태입니다. 그러면 1가 제거되고 루프가 목록의 두 번째 항목으로 이동합니다.

으아악

잠깐.

목록을 반복하는 동안 목록의 길이를 변경하는 좋은 방법은 없습니다. 당신이 할 수 있는 가장 좋은 일은 다음과 같습니다:

으아악

또는 내부 변경의 경우(괄호 안에 있는 것은 슬라이스 할당 전에 암시적으로 튜플로 변환되는 생성기 표현식입니다):

으아악

삭제하기 전에 n에 조치를 취하고 싶다면 시도해 볼 수 있는 한 가지 방법은 다음과 같습니다.

으아악

위 내용은 Python에서 목록을 반복하는 동안 목록에서 항목을 제거하면 이상한 결과가 발생합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!