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

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

WBOY
WBOY앞으로
2024-02-09 10:10:04681검색

在 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으로 문의하시기 바랍니다. 삭제