십대를 위한 코딩/십대를 위한 파이썬

리스트 내포와 조건문을 활용한 곱셈 필터링 실습

forSilver 2025. 5. 5. 05:25
반응형

 

리스트 내포와 조건문을 활용한 곱셈 필터링 실습

파이썬에서는 리스트 내포(List Comprehension)를 이용하면 복잡한 반복문과 조건문을 간결하게 표현할 수 있습니다.
이번 실습은 세 수 i, j, i * j로 구성된 튜플을 생성하되, 특정 조건을 만족하는 경우만 리스트에 포함시키는 예제입니다.


예제 설명

L = [(i, j, i * j) for i in range(2, 100, 2) 
                   for j in range(3, 100, 3)
                   if (i + j) % 7 == 0]

구성 설명:

  • i: 2부터 99까지 2씩 증가하는 짝수
  • j: 3부터 99까지 3씩 증가하는 홀수
  • i * j: 곱셈 결과
  • 조건: (i + j) % 7 == 0
    → i + j의 합이 7의 배수일 때만 포함

예시 출력:

출력된 일부 튜플:

(2, 12, 24), (2, 33, 66), (2, 54, 108),
(4, 3, 12), (4, 24, 96), ...
  • 첫 번째 값: i
  • 두 번째 값: j
  • 세 번째 값: i * j

예를 들어 (4, 3, 12)의 경우 4 + 3 = 7로 조건을 만족하고, 곱셈 결과는 12입니다.


리스트 내포 구조 분석

[(i, j, i * j)       # 생성될 요소 (튜플 형태)
 for i in range(...) # 첫 번째 반복문
 for j in range(...) # 두 번째 반복문
 if 조건문]           # 필터 조건

이 구조는 중첩 for문과 if문을 간단하게 표현할 수 있어 데이터 조작 시 매우 유용합니다.


실용 예제: 조건이 다른 경우

조건을 바꿔 보면 다음과 같은 결과를 만들 수 있습니다.

▷ 곱한 결과가 1000 이상인 경우만

[(i, j, i * j) for i in range(2, 100, 2)
              for j in range(3, 100, 3)
              if i * j >= 1000]


▷ i와 j가 모두 7의 배수일 때

[(i, j, i * j) for i in range(7, 100, 7)
              for j in range(7, 100, 7)]


▷ i * j가 짝수이고, i + j는 홀수일 때

[(i, j, i * j) for i in range(2, 100, 2)
              for j in range(3, 100, 3)
              if (i * j) % 2 == 0 and (i + j) % 2 == 1]


마무리

리스트 내포는 단순한 반복문뿐 아니라 수학적 조건, 필터링, 조합 계산에도 매우 효과적입니다.
이번 예제처럼 range()와 if 조건을 적절히 조합하면, 복잡한 계산도 한 줄로 표현할 수 있습니다.