파이썬 코딩문제ㅜ(짧으니까 알려주세요)
글쓴이: gohy / 작성시간: 화, 2015/09/01 - 10:42오후
3또는 5의 배수이면 True를 반환하는 함수를 사용하여,
ototh리스트(0~999까지 있음)에서 3 또는 5의배수만 남기려고 하고 있습니다.
[1번 방법]
for x in ototh:
if(not(mult_of3r5(x))):
ototh.remove(x)
[2번 방법]
for x in ototh:
if(not(mult_of3r5(x))):
tmp.append(x)
2번 방법으로 하면 tmp에 3 또는 5의 값들만 쌓입니다(정상적으로)
문제는 1번방법으로 하면 결과값들이 (첨부해놓은 이미지 참고) 제대로 필터링이 안된다는 겁니다.
0,3,5 ... 이런식으로 나와야 하는데, 2,8 등이 있는데 도저히 순서대로 따라가도 이해가 가질않습니다ㅜ
알려주세요ㅜㅜ
File attachments:
첨부 | 파일 크기 |
---|---|
![]() | 43.44 KB |
Forums:
루프를 돌리면서 요소들을 제거해 버리면 루프 인덱스와
루프를 돌리면서 요소들을 제거해 버리면 루프 인덱스와 맞물려 프로그램이 제대로 돌지 않습니다.
예를 들어 숫자 1을 제거했다면 2가 이전 1의 자리로 오게 되는데, 그 다음에 처리될 숫자는 2가 될지 3이 될지 보장이 없습니다.
결과를 보니.0 보존1 제거 후 2가 당겨지고
결과를 보니.
0 보존
1 제거 후 2가 당겨지고 다음은 3을 처리하여 보존(2는 프로그램 상에서 처리가 되지 않음)
4 를 제거하고 5는 처리되지 않으며 6은 보존, 7 제거 후 8은 처리되지 않고 9를 처리하여 보존.
따라서 0 2 3 5 6 8 9...이 남습니다.
아!! 그런구조였군요... 아....
감사합니다ㅜ.ㅜ 윗분들의 말씀들어보니 이해가 가네요 감사합니다!!
댓글 달기