
파이썬에서 다음 리스트의 400과 500을 삭제하는 코드를 입력하세요.
nums = [100, 200, 300, 400, 500]
1. list.remove() 메서드 사용하기
remove() 메서드는 리스트에서 지정된 값을 삭제합니다. 삭제하고 싶은 값마다 한 번씩 호출해야 합니다.
nums = [100, 200, 300, 400, 500]
nums.remove(400)
nums.remove(500)
print(nums)
실행 결과:
[100, 200, 300]
코드 분석
이 코드는 list.remove() 메서드를 사용하여 리스트의 특정 값을 삭제합니다.
- nums.remove(400): 리스트 nums에서 첫 번째로 발견되는 값 400을 삭제합니다.
- nums.remove(500): 이어서 값 500을 삭제합니다.
- print(nums): 모든 삭제 작업이 완료된 후, 수정된 리스트 nums를 출력합니다.
이 방법은 리스트에서 원하는 값을 직접 지정하여 제거하는 방식이며, 리스트의 내용이 즉시 수정(in-place)됩니다.
2. 리스트 내포(List Comprehension) 사용하기
이 방법은 삭제하고 싶은 항목을 제외하고 새로운 리스트를 생성하는 방식입니다. 파이썬에서 리스트를 필터링할 때 자주 사용하는 세련된 방법입니다.
nums = [100, 200, 300, 400, 500]
nums = [num for num in nums if num not in (400, 500)]
print(nums)
실행 결과:
[100, 200, 300]
코드 분석
- nums = [100, 200, 300, 400, 500]: 100부터 500까지의 정수가 들어 있는 nums라는 리스트를 만듭니다.
- [num for num in nums if num not in (400, 500)]: 이것이 바로 핵심적인 리스트 내포 구문입니다.
- for num in nums: 기존 리스트 nums의 모든 요소를 하나씩 num이라는 변수에 할당합니다.
- if num not in (400, 500): 각 num이 400이나 500이 아닐 경우에만 조건을 만족합니다.
- [num ...]: 조건을 만족하는 num들만 새로운 리스트에 담습니다.
- nums = ...: 새로 만들어진 [100, 200, 300] 리스트를 원래의 nums 변수에 다시 할당하여 덮어씁니다.
- print(nums): 최종적으로 수정된 nums 리스트를 출력합니다.
이 방법은 원본 리스트를 직접 수정하는 것이 아니라, 조건을 만족하는 요소들만으로 새로운 리스트를 생성하는 효율적인 방식입니다.
3. del과 슬라이싱 사용하기
삭제할 항목의 정확한 위치를 알고 있을 때 사용하는 방법입니다. 400은 인덱스 3에, 500은 인덱스 4에 있으므로, del을 사용해 인덱스 3부터 4까지 삭제할 수 있습니다.
nums = [100, 200, 300, 400, 500]
del nums[3:5]
print(nums)
실행 결과:
[100, 200, 300]
코드 분석
- nums = [100, 200, 300, 400, 500]: nums라는 리스트에 100부터 500까지의 정수를 할당합니다.
- del nums[3:5]: 이 부분이 핵심입니다. del은 파이썬에서 객체를 삭제하는 키워드이며, 여기서는 리스트의 특정 슬라이스(부분)를 삭제합니다.
- 3:5는 슬라이싱 구문으로, 인덱스 3부터 인덱스 5 직전까지를 의미합니다.
- 인덱스 3의 값은 400, 인덱스 4의 값은 500이므로, 이 두 값이 삭제됩니다.
- print(nums): del 연산이 완료된 nums 리스트를 출력합니다.
이 코드는 원본 리스트를 직접 수정하여 값을 삭제하는 방법입니다. 결과적으로 리스트는 [100, 200, 300]만 남게 됩니다.
☞ 추가 설명
Python의 **List Comprehension(리스트 컴프리헨션)**은 기존 리스트를 기반으로 새로운 리스트를 간결하고 효율적으로 생성하는 문법이에요. 여러 줄의 for 루프와 if 조건을 한 줄로 압축할 수 있어 코드를 더 파이썬답게(Pythonic) 만들 수 있습니다. 🐍
기본 구조
List Comprehension은 다음과 같은 기본 구조를 가져요.
[표현식 for 항목 in 리스트 if 조건]
- 표현식: 리스트의 각 항목에 대해 수행할 연산
- 항목: 리스트의 각 요소를 임시로 저장하는 변수
- 리스트: 순회할 기존 리스트 또는 이터러블 객체
- 조건 (선택 사항): for 루프를 통해 생성되는 항목을 필터링하는 조건
예시
예시 1: 간단한 리스트 생성
1부터 10까지의 숫자를 담은 리스트를 만드는 경우, 일반적인 for 루프와 List Comprehension을 비교해볼게요.
일반적인 for 루프
numbers = []
for i in range(1, 11):
numbers.append(i)
List Comprehension
numbers = [i for i in range(1, 11)]
이 한 줄로 동일한 결과를 얻을 수 있습니다.
예시 2: 조건 추가
홀수만 포함된 리스트를 만드는 경우입니다.
일반적인 for 루프
odd_numbers = []
for i in range(1, 11):
if i % 2 != 0:
odd_numbers.append(i)
List Comprehension
odd_numbers = [i for i in range(1, 11) if i % 2 != 0]
장점
- 가독성: 코드가 한 줄로 짧아져 읽기 쉬워요.
- 성능: 일반적인 for 루프보다 더 빠릅니다. Python 내부에서 최적화된 방식으로 리스트를 생성하기 때문이에요.
- 간결함: 불필요한 변수 선언이나 append() 호출 없이 코드를 압축할 수 있어요.
List Comprehension은 리스트뿐만 아니라 Set Comprehension({ }), Dictionary Comprehension({ : }), Generator Expression(( )) 등 다른 데이터 구조에도 적용할 수 있는 강력한 기능입니다.

'파이썬(문제풀이)' 카테고리의 다른 글
| 별찍기-직각삼각형 (0) | 2025.09.07 |
|---|---|
| 파이썬 문제풀이-2 (0) | 2025.09.06 |
| 문제를 통한 파이썬 공부 #28 (0) | 2023.01.29 |
| 문제를 통한 파이썬 공부 #27 (0) | 2023.01.28 |
| 문제를 통한 파이썬 공부 #26 (0) | 2023.01.26 |