문제:
Python for 루프 중에 목록을 수정하는 것은 일반적으로 권장되지 않습니다. 그러나 목록 내의 문자열을 수정해야 하는 경우에는 어떻게 해야 합니까? 이러한 변경 가능한 값을 바꾸는 것은 금지된 수정으로 간주됩니까?
답변:
이미 반복된 목록 내의 요소를 수정하는 한, 수정된 것으로 간주됩니다. 허용됩니다. 예:
a = ['a',' b', 'c ', ' d '] for i, s in enumerate(a): a[i] = s.strip() print(a) # -> ['a', 'b', 'c', 'd']
이 코드는 목록 a를 반복하고 각 문자열에서 공백을 제거합니다. 새 목록을 생성하여 원본에 할당하지 않고 이 작업을 수행합니다.
그러나 반복 중에 목록의 항목 수를 변경하는 것은 위험합니다. 예를 들어:
b = ['a', ' b', 'c ', ' d '] for i, s in enumerate(b): if s.strip() != b[i]: # leading or trailing whitespace? del b[i] print(b) # -> ['a', 'c '] # WRONG!
이 코드는 목록 b에서 선행 또는 후행 공백이 있는 요소를 삭제하려고 시도합니다. 불행히도 요소를 삭제하면 후속 반복의 색인 생성이 중단되기 때문에 실패합니다.
주의:
설명된 대로 목록의 요소를 안전하게 수정할 수 있다는 점에 유의하는 것이 중요합니다. , 요소 수를 늘리거나 줄이려고 하면 오류가 발생할 수 있습니다. 동작.
내부 삭제:
반복 중에 항목을 효과적으로 삭제하려면 목록 이해를 사용하세요.
b = ['a',' b', 'c ', ' d '] b[:] = [entry for entry in b if entry.strip() == entry] print(b) # -> ['a'] # CORRECT
이 코드 선행 또는 후행 공백 없이 항목만 포함하는 새 목록을 생성하여 원하지 않는 요소를 "제자리"에서 효과적으로 제거합니다.
위 내용은 Python에서 반복하는 동안 목록 내의 문자열을 어떻게 안전하게 수정할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!