소프트웨어융합/코드잇 정리.py
리스트 조건(홀수/짝수) 제거했는데 하나(두번째 원소)가 덜 제거된 이유
류지나
2021. 5. 15. 17:37
거-> 어떤 조건을 달아 해당 원소들을 지운다고 했는데,
앞순서부터 훑으면 이러한 조건의 두번째 원소만 덜 제거된채 출력이 돼요.
--> 예를 들어, 2,3,5,7,8,9에서 홀수제거를 했는데, 2, 8이 아닌 2, 5, 8이 나오는 것이죠.
--> 이유는 원소를 삭제했을때 index가 하나 앞당겨져 그런것인데요,
--> 해결) index(원소의 번호)로 접근하면 돼요.
--> 해결) 원소를 뒤에서 부터 훑는 것도 방법이겠죠?
--> 해결) 추가예정... 댓글주세요
numbers란 리스트에 원하는 원소들을 넣어보시고 따라해보세용.
##### >문제: 리스트 안 홀수원소를 제거하자!!!
##### >틀린예시1 - 홀수 원소(두번째) 하나가 덜 제거된 잘못된 결과
for i in numbers:
if i % 2 != 0:
numbers.remove(i)
#del numbers[numbers.index(i)] 도 같은 표현
print(numbers)
##### >틀린예시2 - 홀수 원소(두번째) 하나가 덜 제거된 잘못된 결과
i = 0
while i < len(numbers):
if numbers[i] % 2 != 0:
del(numbers[i])
i += 1
print(numbers)
#list의 item 1개를 삭제할 경우 index가 1개씩 당겨진다.
#i는 numbers[i]가 짝수 일 때만 1씩 더해야 합니다.
.

numbers=[0,1,2,3,4,5,6]
#출력 동일
#---------------------------
for i in range(len(numbers)):
print(numbers[i])
#---------------------------
for i in numbers:
print(i)

##### >맞는예시
i=len(numbers)-1
while i>=0:
if numbers[i]%2 != 0:
del numbers[i]
i-=1
print(numbers)
###### >맞는예시
i = 0
while i < len(numbers):
if numbers[i] % 2 == 1:
del numbers[i]
else:
i += 1
print(numbers)