이 강좌에서는 파이썬의 중요한 제어 구조 중 하나인 for
문에 대해 자세히 알아보겠습니다. for
문은 기본적으로 일정 범위의 값들을 순회할 때 사용됩니다. 파이썬에서 for
문은 시퀀스(리스트, 튜플, 문자열 등)를 순회하는 데 유용하며, 반복 작업을 효율적으로 처리할 수 있도록 도와줍니다.
1. for문 기본 구조
파이썬의 for
문은 시퀀스 내 각 요소에 대해 특정 코드 블록을 반복 실행하도록 설계되어 있습니다. 기본 구조는 다음과 같습니다:
for 변수 in 시퀀스:
실행할 코드
여기서 “변수”는 각 반복에서 시퀀스의 요소 하나를 받게 되며, “실행할 코드”는 실제로 수행할 작업을 포함합니다.
2. 예제: 리스트 순회
리스트를 순회하는 가장 기본적인 예제를 살펴보겠습니다.
fruits = ['사과', '바나나', '체리']
for fruit in fruits:
print(fruit)
이 코드는 fruits
리스트의 각 과일 이름을 출력합니다. 출력 결과는 아래와 같습니다:
사과
바나나
체리
3. range() 함수와 함께 사용하는 for문
range()
함수는 주로 for
문과 함께 사용되어 정해진 횟수만큼 코드를 반복 실행할 수 있게 합니다. range(start, stop[, step])
구문을 가지며, 파라미터는 다음과 같습니다:
start
: 카운트가 시작될 숫자. 기본값은 0.stop
: 카운트가 끝날 숫자(포함되지 않음).step
: 카운트 간의 간격. 기본값은 1.
예시를 통해 이해해 보겠습니다:
for i in range(3):
print(i)
출력:
0
1
2
4. 중첩 for문
중첩 for
문은 간단히 말해 for
문 내에 또 다른 for
문이 있는 구조를 의미합니다. 다음은 이중 리스트를 순회하는 중첩 for
문의 예시입니다:
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in matrix:
for num in row:
print(num)
이 코드는 2차원 리스트의 모든 숫자를 출력합니다.
5. for문과 else
파이썬에서 for
문은 의외로 else
와 함께 사용될 수 있습니다. for
문이 정상적으로 끝났을 때 수행될 코드를 else
블록에 작성할 수 있습니다. 다음 예제를 보시죠:
for fruit in fruits:
if fruit == '바나나':
print('바나나 발견!')
break
else:
print('바나나가 없습니다.')
이 경우 ‘바나나 발견!’이 출력되며, 베어와 함께 for else
문이 어떻게 작동하는지 이해할 수 있습니다.
6. enumerate()와 함께 사용하기
enumerate()
함수는 시퀀스를 순회할 때 인덱스와 요소를 동시에 다루도록 도와줍니다. 다음 예제를 통해 자세히 살펴보겠습니다:
for index, fruit in enumerate(fruits):
print(index, fruit)
출력:
0 사과
1 바나나
2 체리
7. 무한 루프를 피하기 위한 Break
특정 조건에서 for
반복을 중단하고 싶다면, break
문을 사용할 수 있습니다. 이렇게 사용하면 무한 루프나 불필요한 반복을 피할 수 있습니다.
for i in range(10):
if i == 5:
break
print(i)
출력:
0
1
2
3
4
8. 성능 고려하기
복수의 반복문을 사용할 때는 성능을 고려해야 합니다. 특히 데이터셋이 클 경우, 중첩 반복문은 성능에 부정적인 영향을 줄 수 있습니다. 이를 최소화하기 위한 팁은 다음과 같습니다:
- 가능한 경우 리스트 내포(list comprehensions)를 사용합니다.
- 필요하지 않은 반복을 피하기 위한 ‘break’ 및 ‘continue’ 구문을 적절히 사용합니다.
9. for문과 리스트 내포
리스트 내포는 리스트를 더 간결하게 생성할 수 있는 방법입니다. 반복문에 비해 짧고, 때로는 속도가 더 빠릅니다:
numbers = [1, 2, 3, 4, 5]
squared = [n**2 for n in numbers]
print(squared)
출력:
[1, 4, 9, 16, 25]
결론
파이썬의 for
문은 다양한 데이터 구조를 순회하고 처리하는 데 필수적인 도구이며, 효율적인 코드 작성에 큰 도움이 됩니다. 효과적인 코드를 작성하기 위해서는 for
문의 다양한 활용법을 이해하고, 실제 코드에 적용해 보는 것이 중요합니다.