반응형
리스트 내포와 조건문을 활용한 곱셈 필터링 실습
파이썬에서는 리스트 내포(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 조건을 적절히 조합하면, 복잡한 계산도 한 줄로 표현할 수 있습니다.
'십대를 위한 코딩 > 십대를 위한 파이썬' 카테고리의 다른 글
Python 표준 라이브러리의 모듈, os와 sys의 차이 (1) | 2025.05.03 |
---|---|
str.format() 방식과 f-string 방식의 비교 설명 (0) | 2025.05.02 |
Python str.format() 완전 분석 (1) | 2025.05.01 |
파이썬 불리언 자료형, 숫자처럼 연산된다? (1) | 2025.04.19 |
16. 함수 고급 활용과 모듈의 기초 (1) | 2025.04.06 |