본문 바로가기

파이썬(문제풀이)

파이썬 문제풀이-1

 

파이썬에서 다음 리스트의 400과 500을 삭제하는 코드를 입력하세요.

nums = [100, 200, 300, 400, 500]


1. list.remove() 메서드 사용하기

remove() 메서드는 리스트에서 지정된 값을 삭제합니다. 삭제하고 싶은 값마다 한 번씩 호출해야 합니다.

Python
 
nums = [100, 200, 300, 400, 500]
nums.remove(400)
nums.remove(500)
print(nums)

실행 결과:

[100, 200, 300]

코드 분석


이 코드는 list.remove() 메서드를 사용하여 리스트의 특정 값을 삭제합니다.

  1. nums.remove(400): 리스트 nums에서 첫 번째로 발견되는 값 400을 삭제합니다.
  2. nums.remove(500): 이어서 값 500을 삭제합니다.
  3. print(nums): 모든 삭제 작업이 완료된 후, 수정된 리스트 nums를 출력합니다.

이 방법은 리스트에서 원하는 값을 직접 지정하여 제거하는 방식이며, 리스트의 내용이 즉시 수정(in-place)됩니다.


2. 리스트 내포(List Comprehension) 사용하기

이 방법은 삭제하고 싶은 항목을 제외하고 새로운 리스트를 생성하는 방식입니다. 파이썬에서 리스트를 필터링할 때 자주 사용하는 세련된 방법입니다.

Python
 
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까지 삭제할 수 있습니다.

Python
 
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 루프

Python
 
numbers = []
for i in range(1, 11):
    numbers.append(i)

List Comprehension

Python
 
numbers = [i for i in range(1, 11)]

이 한 줄로 동일한 결과를 얻을 수 있습니다.

예시 2: 조건 추가

홀수만 포함된 리스트를 만드는 경우입니다.

일반적인 for 루프

Python
 
odd_numbers = []
for i in range(1, 11):
    if i % 2 != 0:
        odd_numbers.append(i)

List Comprehension

Python
 
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