본문 바로가기
개발&프로그래밍

[Python] for문과 while문 실전 활용

by 재아군 2024. 11. 23.

[Python] for문과 while문 실전 활용

반복문은 프로그래밍의 기본 중의 기본이다. Python의 for문과 while문을 효과적으로 사용하는 방법을 알아보자.

반복문 기초

for문 기본 구조

# 리스트 순회
fruits = ['apple', 'banana', 'orange']
for fruit in fruits:
    print(fruit)

# 문자열 순회
message = "Python"
for char in message:
    print(char)

# 인덱스와 함께 순회
for index, fruit in enumerate(fruits):
    print(f"{index}번째 과일: {fruit}")

while문 기본 구조

# 기본 while문
count = 0
while count < 5:
    print(count)
    count += 1

# 조건 기반 while문
number = 10
while number > 0:
    print(number)
    number -= 2

 

range 함수

range 기본 활용

# 기본 범위
for i in range(5):  # 0부터 4까지
    print(i)

# 시작과 끝 지정
for i in range(2, 6):  # 2부터 5까지
    print(i)

# 간격 지정
for i in range(0, 10, 2):  # 0, 2, 4, 6, 8
    print(i)

# 역순 반복
for i in range(5, 0, -1):  # 5, 4, 3, 2, 1
    print(i)

range 활용 예제

# 리스트 생성
numbers = list(range(1, 6))  # [1, 2, 3, 4, 5]

# 특정 횟수만큼 반복
for _ in range(3):  # 3번 반복
    print("Hello")

# 구구단 출력
for i in range(2, 10):
    for j in range(1, 10):
        print(f"{i} x {j} = {i*j}")

 

break와 continue

break 활용

# 특정 조건에서 반복 중단
for number in range(1, 11):
    if number == 5:
        break
    print(number)

# 사용자 입력 처리
while True:
    answer = input("계속하시겠습니까? (y/n): ")
    if answer.lower() == 'n':
        break

continue 활용

# 짝수만 출력
for number in range(1, 6):
    if number % 2 != 0:  # 홀수면 건너뛰기
        continue
    print(number)

# 특정 조건 제외
numbers = [1, -2, 3, -4, 5]
for num in numbers:
    if num < 0:
        continue
    print(num)  # 양수만 출력

중첩 반복문

기본 중첩 반복문

# 좌표 생성
for x in range(3):
    for y in range(3):
        print(f"({x}, {y})")

# 별표 패턴 출력
for i in range(5):
    for j in range(i + 1):
        print("*", end="")
    print()  # 줄바꿈

실전 활용 예제

# 2차원 리스트 처리
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# 모든 요소 출력
for row in matrix:
    for num in row:
        print(num, end=" ")
    print()

# 행렬 덧셈
matrix1 = [[1, 2], [3, 4]]
matrix2 = [[5, 6], [7, 8]]
result = []

for i in range(len(matrix1)):
    row = []
    for j in range(len(matrix1[0])):
        row.append(matrix1[i][j] + matrix2[i][j])
    result.append(row)

고급 활용 예제

리스트 컴프리헨션과 비교

# 일반적인 for문
squares = []
for i in range(10):
    squares.append(i**2)

# 리스트 컴프리헨션
squares = [i**2 for i in range(10)]

# 조건부 리스트 컴프리헨션
even_squares = [i**2 for i in range(10) if i % 2 == 0]

반복문과 함께 사용하는 유용한 함수들

# zip 활용
names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]

for name, age in zip(names, ages):
    print(f"{name}는 {age}살입니다")

# filter 활용
numbers = [1, -2, 3, -4, 5]
positive = filter(lambda x: x > 0, numbers)
print(list(positive))  # [1, 3, 5]

실용적인 예제

def find_prime_numbers(n):
    """에라토스테네스의 체 구현"""
    sieve = [True] * (n + 1)
    sieve[0] = sieve[1] = False

    for i in range(2, int(n ** 0.5) + 1):
        if sieve[i]:
            for j in range(i * i, n + 1, i):
                sieve[j] = False

    return [i for i in range(n + 1) if sieve[i]]

primes = find_prime_numbers(30)
print(primes)

성능 고려사항

  1. 불필요한 반복 줄이기
    # 나쁜 예
    for i in range(len(array)):
        print(array[i])
    
    # 좋은 예
    for item in array:
        print(item)
     

   2. 루프 최적화

 

 

# 자주 사용하는 값은 루프 밖에서 계산
length = len(array)  # 한 번만 계산
for i in range(length):
    # 코드 작성

댓글