
주어진 리스트 [100, 300, 400, 500, 700]에서 400과 500을 삭제하는 파이썬 코딩
#1. list.remove() 메서드 사용
가장 직관적인 방법으로, list.remove() 메서드를 사용하여 리스트에서 특정 값을 직접 삭제할 수 있습니다. 이 방법은 리스트에 중복되는 값이 없을 때 유용합니다.
my_list = [100, 300, 400, 500, 700]
my_list.remove(400)
my_list.remove(500)
print(my_list) # 결과: [100, 300, 700]
코드 분석
my_list = [100, 300, 400, 500, 700]
이 코드는 my_list라는 변수에 5개의 정수 값을 가진 리스트를 할당합니다. 리스트는 순서가 있는 데이터 모음입니다.
my_list.remove(400)
이 코드는 리스트 my_list에서 값 400을 찾아 제거합니다. remove() 메서드는 리스트의 첫 번째로 발견된 일치하는 항목을 삭제합니다. 이 작업이 실행된 후 my_list는 [100, 300, 500, 700]이 됩니다.
my_list.remove(500)
이 코드는 업데이트된 my_list에서 값 500을 찾아 제거합니다. 이 작업이 완료되면 my_list는 최종적으로 [100, 300, 700]이 됩니다.
print(my_list)
이 코드는 최종적으로 수정된 my_list를 출력합니다. 따라서 출력 결과는 [100, 300, 700]이 됩니다.
이 코드는 remove() 메서드를 사용하여 리스트 내의 특정 값을 직접 삭제하는 가장 간단하고 직관적인 방법 중 하나입니다.
#2. del 키워드와 인덱스 사용
del 키워드는 리스트의 특정 인덱스에 있는 요소를 삭제할 때 사용됩니다. list.index() 메서드를 사용하여 삭제할 값의 인덱스를 찾은 후 del로 삭제할 수 있습니다. 여러 요소를 삭제할 때는 인덱스가 변경될 수 있으므로 주의해야 합니다.
my_list = [100, 300, 400, 500, 700]
del my_list[my_list.index(400)]
del my_list[my_list.index(500)]
print(my_list) # 결과: [100, 300, 700]
코드 분석
my_list = [100, 300, 400, 500, 700]
이 코드는 **my_list**라는 변수에 정수 값들을 담은 리스트를 할당합니다. 리스트는 순서가 있는 데이터 구조입니다.
del my_list[my_list.index(400)]
이 코드는 del 키워드와 my_list.index() 메서드를 조합하여 값을 삭제합니다.
- **my_list.index(400)**는 리스트에서 값 400이 위치한 인덱스를 찾습니다. 이 경우, 400은 세 번째 항목이므로 인덱스 2를 반환합니다.
- **del my_list[2]**와 동일한 효과를 내며, 인덱스 2에 해당하는 값인 400을 리스트에서 삭제합니다. 이 작업이 실행된 후 my_list는 [100, 300, 500, 700]이 됩니다.
del my_list[my_list.index(500)]
이 코드는 변경된 **my_list**에서 값 500을 삭제합니다.
- 첫 번째 del 연산 후 리스트가 변경되었기 때문에 500의 인덱스가 달라졌습니다. 이 시점의 my_list는 [100, 300, 500, 700]이며, 500의 인덱스는 2입니다.
- **my_list.index(500)**는 인덱스 2를 반환합니다.
- **del my_list[2]**와 동일하게 동작하여 500을 삭제합니다. 이 작업이 완료된 후 my_list는 최종적으로 [100, 300, 700]이 됩니다.
print(my_list)
이 코드는 최종적으로 수정된 **my_list**를 출력합니다. 따라서 출력 결과는 [100, 300, 700]이 됩니다. 이 방법은 del 키워드를 사용해 인덱스로 요소를 제거하는 방법입니다. 여러 요소를 삭제할 때는 삭제할 요소들의 인덱스가 변경될 수 있으므로 매번 index()를 다시 호출해야 한다는 점을 기억해야 합니다.
#3. 리스트 컴프리헨션(List Comprehension)
원본 리스트를 수정하지 않고, 삭제할 값을 제외한 새로운 리스트를 만들고 싶을 때 가장 효율적이고 파이썬다운 방법입니다.
my_list = [100, 300, 400, 500, 700]
to_remove = {400, 500}
new_list = [item for item in my_list if item not in to_remove]
print(new_list) # 결과: [100, 300, 700]
코드 분석
my_list = [100, 300, 400, 500, 700]
이 코드는 my_list 변수에 정수 값들을 포함하는 리스트를 할당합니다.
to_remove = {400, 500}
이 코드는 삭제할 값들을 포함하는 집합(set) **to_remove**를 생성합니다. 리스트와 달리 집합은 순서가 없고 중복을 허용하지 않습니다. 여기서 집합을 사용하는 이유는 리스트에서 in 연산자를 사용해 값을 찾을 때보다 효율적이기 때문입니다. 리스트는 처음부터 끝까지 순차적으로 탐색하지만, 집합은 해시 테이블 기반이라 평균적으로 O(1)의 시간 복잡도를 가집니다.
new_list = [item for item in my_list if item not in to_remove]
이 코드는 리스트 컴프리헨션으로, **my_list**를 순회하며 조건에 맞는 요소로 새로운 리스트를 만듭니다.
- for item in my_list: my_list의 각 요소를 순서대로 item에 할당하며 반복합니다.
- if item not in to_remove: 현재 item이 to_remove 집합에 포함되어 있지 않은지 확인합니다.
- [item ...]: if 조건이 True인 경우에만 해당 item을 새로운 리스트 **new_list**에 포함시킵니다.
따라서 400과 500은 to_remove 집합에 포함되어 있으므로 if 조건에 맞지 않아 new_list에 추가되지 않습니다. 이 과정을 거쳐 new_list는 [100, 300, 700]이 됩니다.
print(new_list)
이 코드는 최종적으로 생성된 **new_list**를 출력합니다. 출력 결과는 [100, 300, 700]입니다. 이 방법은 코드가 간결하고, 원본 리스트를 보존하며, 여러 값을 동시에 삭제할 때 매우 효율적입니다.
#4. filter() 함수 사용
filter() 함수를 사용하여 특정 조건에 맞는 요소만 걸러내어 새로운 리스트를 생성할 수 있습니다. 람다(lambda) 함수와 함께 사용하여 코드를 간결하게 만들 수 있습니다.
my_list = [100, 300, 400, 500, 700]
to_remove = {400, 500}
filtered_list = list(filter(lambda item: item not in to_remove, my_list))
print(filtered_list) # 결과: [100, 300, 700]
코드 분석
my_list = [100, 300, 400, 500, 700]
이 코드는 **my_list**라는 변수에 정수 값들을 담고 있는 리스트를 할당합니다.
to_remove = {400, 500}
삭제할 값들을 **to_remove**라는 이름의 집합(set)에 저장합니다. 집합은 내부적으로 해시 테이블을 사용하여 값이 존재하는지 확인하는 속도가 매우 빠르기 때문에, 여러 값을 효율적으로 검색해야 할 때 유용합니다.
filtered_list = list(filter(lambda item: item not in to_remove, my_list))
이 코드는 핵심적인 부분으로, filter() 함수를 사용해 my_list의 요소를 걸러냅니다.
- filter(function, iterable): iterable의 각 요소를 function에 적용하여 True를 반환하는 요소들만 걸러내는 내장 함수입니다.
- lambda item: item not in to_remove: 이 코드는 람다 표현식으로, 이름 없는 익명 함수를 정의합니다. 이 함수는 my_list의 각 item을 인수로 받아 to_remove 집합에 포함되지 않는지 확인하고, 그 결과를 True 또는 False로 반환합니다.
- filter() 함수는 이 람다 함수의 결과가 True인 요소들(100, 300, 700)만 모아 filter 객체를 반환합니다.
- list(...): filter 객체는 리스트가 아니므로, 최종적으로 list() 함수를 사용해 리스트로 변환하여 **filtered_list**에 저장합니다.
이 과정을 통해 filtered_list는 [100, 300, 700]이 됩니다.
print(filtered_list)
최종적으로 **filtered_list**를 출력합니다. 출력 결과는 [100, 300, 700]입니다. 이 방법은 리스트 컴프리헨션과 마찬가지로 원본 리스트를 수정하지 않고, 조건을 만족하는 새로운 리스트를 만드는 데 사용됩니다.

'파이썬(문제풀이)' 카테고리의 다른 글
| 파이썬 거스름돈-greedy function (0) | 2025.09.22 |
|---|---|
| 파이썬 버블정렬 (0) | 2025.09.20 |
| 파이썬 1에서 1000까지의 자연수중 3의 배수의 합 (0) | 2025.09.19 |
| 파이썬 2제곱, 3제곱, 4제곱 코딩 (0) | 2025.09.17 |
| 파이썬 일렬로 나열된 숫자의 자릿수 합 (0) | 2025.09.16 |