파이썬에서 반복문은 다양한 형태로 활용할 수 있어요. range를 사용해 범위를 지정할 수 있지만, 리스트를 활용하여 반복문을 작성할 수도 있습니다. 또 이번 글에서는 최솟값과 최댓값을 구하는 방법에 대해 알아볼게요.
리스트를 활용한 for문
리스트는 인덱스를 활용해서 여러 가지 데이터를 저장하고 관리하는 자료형입니다. 인덱스를 활용하면 리스트에 저장된 각 요소에 접근할 수 있어요. 다음과 같은 animal이라는 리스트를 만들어 보겠습니다.
animal = ["lion", "rabbit", "tiger", "elephant", "bear", "dog"]
리스트의 각 요소는 다음과 같은 방식으로 접근할 수 있어요.
animal[0] # 'lion'
animal[1] # 'rabbit'
animal[2] # 'tiger'
# ...
리스트와 for문의 결합
리스트를 for문에 적용하면 리스트의 각 요소를 순서대로하여 반복 처리를 할 수 있습니다. 위에서 만든 animal리스트를 활용한 반복문을 살펴봅시다.
for a in animal:
print(f"동물: {a}, 글자 수: {len(a)}")
코드 설명:
- a는 리스트 animal의 요소를 순서대로 가져옵니다.
- len(a)는 해당 요소의 글자 수를 반환합니다.
실행 결과:
동물: lion, 글자 수: 4
동물: rabbit, 글자 수: 6
동물: tiger, 글자 수: 5
동물: elephant, 글자 수: 8
동물: bear, 글자 수: 4
동물: dog, 글자 수: 3
for문으로 최솟값 구하기
리스트에 저장된 여러 숫자 중에서 최솟값을 구하는 프로그램을 작성해 보려고 합니다.
다음과 같은 숫자 리스트를 생성해 주세요.
numbers = [25, 33, 42, 78, 53, 2, 99, 13]
코드 작성:
numbers = [25, 33, 42, 78, 53, 2, 99, 13]
# 최솟값 변수 초기화
minimum = numbers[0]
# for문을 이용해 최솟값 찾기
for a in numbers:
if a < minimum: # 현재 값이 기존 최솟값보다 작으면 교체
minimum = a
print(f"최솟값: {minimum}")
코드 설명:
- 4번 줄의 minimum 변수에 리스트의 첫 번째 요소를 저장하여 최솟값을 초기화합니다.
- for문을 통해 리스트의 각 요소를 탐색하며 현재 요소 a가 minimum보다 작으면 minimum을 교체해 줍니다.
for문으로 최댓값 구하기
같은 요령으로 최댓값을 구하는 프로그램을 작성할 수 있어요.
코드 작성:
numbers = [25, 33, 42, 78, 53, 2, 99, 13]
# 최댓값 변수 초기화
maximum = numbers[0]
# for문을 이용해 최댓값 찾기
for a in numbers:
if a > maximum: # 현재 값이 기존 최댓값보다 크면 교체
maximum = a
print(f"최댓값: {maximum}")
코드 설명:
- maximum 변수를 선언하고 리스트의 첫 번째 요소를 저장하여 초기화 합니다.
- for문을 통해 리스트의 각 요소를 탐색하며 현재 요소 a가 maximum보다 크면 maximum 값을 교체합니다.
최솟값과 최댓값을 한꺼번에 구하기
조건문을 활용하면 최솟값과 최댓값을 한꺼번에 구할 수도 있습니다.
코드 작성:
numbers = [25, 33, 42, 78, 53, 2, 99, 13]
minimum = numbers[0]
maximum = numbers[0]
for a in numbers:
if a < minimum:
minimum = a
elif a > maximum:
maximum = a
print(f"최솟값: {minimum}, 최댓값: {maximum}")
코드 설명:
- minimum과 maximum을 리스트의 첫 번째 요소로 하여 초기화합니다.
- for문을 통해 리스트의 각 요소를 탐색합니다. 현재 요소 a가 minimum보다 작다면 minimum을 교체합니다. 해당 요소가 minimum이 되므로 maximum인지 여부를 확인하지 않습니다.
- 현재 요소 a가 minimum보다 작지 않다면 minimum을 교체하지 않습니다. a가 maximum보다 큰지를 확인하여 크다면 교체하고, 그렇지 않다면 반복문을 이어서 수행합니다.
내장 함수 활용하기
최댓값과 최솟값을 구하는 프로그램이 그렇게 어렵지는 않지만 자주 필요로 하게 되는 프로그램 연산이기도 합니다. 그래서 파이썬에는 최솟값과 최댓값을 구하는 내장 함수 min()과 max()를 제공하고 있습니다. 이를 활용하면 간결한 코드를 작성할 수 있습니다.
코드 작성:
numbers = [25, 33, 42, 78, 53, 2, 99, 13]
minimum = min(numbers)
maximum = max(numbers)
print(f"최솟값: {minimum}, 최댓값: {maximum}")
최솟값과 최댓값의 인덱스 찾기
리스트를 탐색하며 최솟값과 최댓값을 찾기 위해 인덱스를 활용한 프로그래밍을 해보았습니다. 반대로, 인덱스가 필요할 때는 어떻게 할까요? 인덱스를 구하기 위한 리스트의 메서드를 활용하면 됩니다.
코드 작성:
numbers = [25, 33, 42, 78, 53, 2, 99, 13]
min_index = numbers.index(min(numbers))
max_index = numbers.index(max(numbers))
print(f"최솟값 위치: {min_index}, 최댓값 위치: {max_index}")
코드 설명:
min(numbers)는 리스트의 최솟값을 반환합니다. numbers.index에 해당 값을 매개 변수로 입력하면 해당 값의 인덱스를 반환해 줍니다. max()의 경우도 마찬가지입니다.
마치며
for문을 통한 반복문에 리스트를 사용하게 되면, 리스트의 각 요소를 탐색하는 유용한 프로그래밍 도구가 됩니다. 데이터 탐색 작업이 되는 것이지요. 잘 만들어진 데이터 탐색 알고리즘은 실생활의 다양한 문제를 해결하는 데 도움이 되기 때문에 제시된 형태의 탐색 논리말고 다양한 방법을 탐구해 보시기를 바랍니다.