○ 알고리즘, 자료구조/2021 알고리즘
리스트 함수를 활용하여 차례대로 수정하기
0ver-grow
2021. 5. 28. 21:29
반응형
막힌 상황 : 3번째 출력에서 홀수 7이 들어있다.
# 빈 리스트 만들기
numbers = []
print(numbers)
# numbers에 값들 추가
numbers = [1, 7, 3, 6, 5, 2, 13, 14]
print(numbers)
# numbers에서 홀수 제거
index = 0
while index < len(numbers) :
if numbers[index] % 2 != 0 : # 홀수라면
del numbers[index]
index += 1
print(numbers) # 출력 결과물에 유일하게 홀수 7이 들어있다. [7, 6, 2, 14]
# numbers의 인덱스 0 자리에 20이라는 값 삽입
numbers.insert(0, 20)
print(numbers)
# numbers를 정렬해서 출력
numbers.sort()
print(numbers)
원인 발견
while index < len(numbers) :
if numbers[index] % 2 != 0 : # 홀수라면
del numbers[index] # 삭제
index += 1
먼저 수정전 인덱스 0과 1의 값은 1, 7이다.
인덱스 0의 값 1은 홀수이므로 del 되고
이 인덱스 0의 빈자리를 인덱스 1의 값 7이 대신하게 된다.
그런데, index의 값은 += 1이 되므로
값 7은 비교 대상에서 제외되므로 삭제되지 않은 것이다.
해결 : continue를 쓰면 된다.
while index < len(numbers) :
if numbers[index] % 2 != 0 : # 홀수라면
del numbers[index] # 삭제
continue
index += 1
모범답안
# 빈 리스트 만들기
numbers = []
print(numbers)
# numbers에 값들 추가
numbers.append(1)
numbers.append(7)
numbers.append(3)
numbers.append(6)
numbers.append(5)
numbers.append(2)
numbers.append(13)
numbers.append(14)
print(numbers)
# numbers에서 홀수 제거
i = 0
while i < len(numbers):
if numbers[i] % 2 == 1:
del numbers[i]
else:
i += 1
print(numbers)
# numbers의 인덱스 0 자리에 20이라는 값 삽입
numbers.insert(0, 20)
print(numbers)
# numbers를 정렬해서 출력
numbers.sort()
print(numbers)
반응형