소프트웨어융합/코드잇 정리.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)