반응형
    
    
    
  
리스트 내포와 조건문을 활용한 곱셈 필터링 실습
파이썬에서는 리스트 내포(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 조건을 적절히 조합하면, 복잡한 계산도 한 줄로 표현할 수 있습니다.
'십대를 위한 코딩 > 십대를 위한 파이썬' 카테고리의 다른 글
| 사용자 정의 함수를 활용한 고급 key 정렬 (1) | 2025.05.11 | 
|---|---|
| 파이썬 리스트 정렬 완전 정복 – sort(), sorted(), key 옵션까지 (1) | 2025.05.10 | 
| Python 표준 라이브러리의 모듈, os와 sys의 차이 (1) | 2025.05.03 | 
| str.format() 방식과 f-string 방식의 비교 설명 (0) | 2025.05.02 | 
| Python str.format() 완전 분석 (1) | 2025.05.01 |