remove와 del

Mun Lee·2020년 6월 24일
0

리스트에 있는 요소들을 지울때는 remove와 del 2가지의 방식이 있다.
del은 그 지울려는 요소의 리스트 인덱스으로 지우는 것이고 remove는 그 값을 지우는 것으로 볼 수 있다.

예를들어
twice = [ "나연", "사나", "정연", "모모", "미나", "채영", "다현", "쯔위", "지효"]

여기서 사나를 지우고 싶으면

del twice(1)을 할수도 있고 remove("사나") 할 수도 있다.

Input으로 주어진 리스트에서 홀수는 전부 지우고 짝수만 남은 리스트를 반환하라
리스트의 요소들은 전부 숫자값이고 총 요소 수는 5개이다.
이러한 문제가 있어 풀었을때

def remove_odd_numbers(numbers):
	for i in numbers:
		if(i%2 ==1):
			numbers.remove(i)
	return numbers

라고 하였다가 2시간가량 결과가 원하는데로 나오지 않아 속상했다. 이렇게 할 경우에 홀수가 없어지는 것이 아니라 홀수번째거가 사라졌다. remove을 이용하면 for문에 해당하는 숫자는 아예 삭제되고 새로운 배열 numbers가 된다. 우리가 알고 있던 numbers가 아니라 숫자가 사라진 numbers인것이다. 그렇지만 for문은 이를 고려하지 않기때문에 이전에 알던대로 그대로 해서 2번째꺼라 아니라 3번째꺼를 기준으로 하게되서 짝수번째는 아예 언급도 될수가 없다. 이러한 문제를 해결하기 위해

def remove_odd_numbers(numbers):
	answer = []
	for i in numbers:
		if(i%2 ==0):
			answer.append(i)
	return answer

빈 리스트를 하나만들어서 그 곳에 해당하는 숫자가 짝수면 넣어주는 방식으로 바꾸어보았고 원하는대로 결과가 출력되었다.
ab = (1,3,5,7,8)
remove_odd_numbers(ab)를 했을떄 [8]가 결과로 나온다.

profile
개발자가 되고자 하는 30살

0개의 댓글