콘텐츠로 건너뛰기

파이썬의 최소값을 사용/수정하는 방법은 무엇인가요?

[

Python의 min()과 max(): 가장 작은 값과 가장 큰 값을 찾기

Python의 내장 함수인 min()과 max()는 iterable 또는 일련의 일반적인 인수에서 가장 작은 값과 가장 큰 값을 찾을 때 유용합니다. 이러한 계산은 상당히 기본적인 연산처럼 보일지 모르지만, 실제 프로그래밍에서는 흥미로운 다양한 사용 사례가 있습니다. 이번 튜토리얼에서는 몇 가지 사용 사례를 실습해 보겠습니다.

이 튜토리얼에서는 다음을 배울 수 있습니다:

  • Python의 min()과 max()를 사용하여 데이터에서 가장 작은 값과 가장 큰 값을 찾는 방법
  • min()과 max()를 단일 iterable 또는 임의의 수의 일반적인 인수와 함께 호출하는 방법
  • min()과 max()를 문자열사전과 함께 사용하는 방법
  • min()과 max()의 동작을 조정하는 keydefault 인수 사용하기
  • min()과 max()에 컴프리헨션제너레이터 표현식을 인수로 사용하기

이러한 지식을 습득한 후에는 min()과 max()의 유용성을 보여주는 실용적인 예제를 작성할 수 있게 될 것입니다. 마지막으로, min()과 max()의 내부 동작 방식을 이해하는 데 도움이 되는 순수한 Python으로 직접 min()과 max()의 버전을 작성하게 될 것입니다.

무료 보너스: Python 숙련에 대한 5가지 생각

Python의 min()과 max() 함수 시작하기

Python의 min()과 max() 함수는 다른 자료형에서 사용하는 방법과 유사합니다. 가장 간단한 사용 사례는 단일 iterable 인수를 전달하는 것입니다. iterable은 순차적으로 반복할 수 있는 자료형입니다. 예를 들어, 리스트, 튜플, 문자열 등이 있습니다.

단일 iterable 인수로 min()과 max() 호출하기

min()과 max() 함수를 호출할 때 단일 iterable을 전달하면 해당 iterable에서 가장 작은 값과 가장 큰 값을 반환합니다.

numbers = [5, 3, 8, 1, 9, 2]
smallest = min(numbers)
largest = max(numbers)
print(smallest) # 출력: 1
print(largest) # 출력: 9

여러 인수로 min()과 max() 호출하기

min()과 max() 함수는 단일 iterable 인수뿐만 아니라 여러 개의 인수를 전달할 수도 있습니다. 이 경우, 인수 중에서 가장 작은 값과 가장 큰 값을 반환합니다.

first_num = 5
second_num = 9
third_num = 2
smallest = min(first_num, second_num, third_num)
largest = max(first_num, second_num, third_num)
print(smallest) # 출력: 2
print(largest) # 출력: 9

문자열과 문자열의 iterable로 min()과 max() 사용하기

min()과 max() 함수는 iterable로 문자열을 사용할 수도 있습니다. 문자열은 문자들의 시퀀스로 간주되므로, 가장 작은 문자와 가장 큰 문자를 반환할 수 있습니다.

word = 'python'
smallest = min(word)
largest = max(word)
print(smallest) # 출력: 'h'
print(largest) # 출력: 'y'

사전을 처리할 때 min()과 max() 사용하기

min()과 max() 함수는 iterable로 사전을 사용하는 경우에도 사용할 수 있습니다. 사전은 기본적으로 키(key)의 iterable로 처리됩니다.

prices = {'apple': 0.5, 'banana': 0.3, 'orange': 0.6}
cheapest = min(prices)
most_expensive = max(prices)
print(cheapest) # 출력: 'apple'
print(most_expensive) # 출력: 'orange'

key와 default 인수를 사용하여 min()과 max()의 표준 동작 수정하기

min()과 max() 함수는 표준 동작에 tweak를 가할 수 있는 key 및 default 인수를 제공합니다. key 인수를 사용하면 iterable의 각 요소에 대해 지정된 키 함수를 적용하여 비교할 수 있습니다. default 인수는 iterable이 비어 있을 때 반환할 값을 지정합니다.

numbers = [5, -3, 8, 1, -9, 2]
absolute_smallest = min(numbers, key=abs)
absolute_largest = max(numbers, key=abs)
default_value = min([], default='empty')
print(absolute_smallest) # 출력: 1
print(absolute_largest) # 출력: -9
print(default_value) # 출력: 'empty'

컴프리헨션과 제너레이터 표현식을 인수로 사용하여 min()과 max() 사용하기

min()과 max() 함수를 사용할 때 컴프리헨션 및 제너레이터 표현식을 인수로 전달하여 더 유연하고 효율적으로 사용할 수 있습니다.

numbers = [5, 3, 8, 1, 9, 2]
squares_smallest = min([x**2 for x in numbers])
even_largest = max(x for x in numbers if x % 2 == 0)
print(squares_smallest) # 출력: 1
print(even_largest) # 출력: 8

Python의 min()과 max() 활용하기

앞서 배운 내용을 바탕으로 min()과 max()의 유용성과 다양한 활용 사례를 살펴보겠습니다.

리스트에서 가장 작고 큰 수 제거하기

numbers = [5, 8, 2, 1, 9, 4]
smallest = min(numbers)
largest = max(numbers)
numbers.remove(smallest)
numbers.remove(largest)
print(numbers) # 출력: [5, 8, 2, 4]

최소 및 최대 값들의 리스트 만들기

numbers = [5, 8, 2, 1, 9, 4]
smallest = min(numbers)
largest = max(numbers)
new_list = [smallest, largest]
print(new_list) # 출력: [1, 9]

값들을 구간의 경계로 클리핑하기

values = [5, 8, 2, 1, 9, 4]
lower_bound = 3
upper_bound = 7
clipped_values = [min(max(x, lower_bound), upper_bound) for x in values]
print(clipped_values) # 출력: [5, 7, 3, 3, 7, 4]

가장 가까운 점 찾기

points = [(1, 2), (4, 6), (8, 3), (5, 9), (2, 1)]
target = (7, 4)
closest_point = min(points, key=lambda p: (p[0]-target[0])**2 + (p[1]-target[1])**2)
print(closest_point) # 출력: (8, 3)

저렴하고 비싼 상품 식별하기

products = {'apple': 0.5, 'banana': 0.3, 'orange': 0.6, 'grape': 1.2}
cheapest = min(products, key=products.get)
most_expensive = max(products, key=products.get)
print(cheapest) # 출력: 'banana'
print(most_expensive) # 출력: 'grape'

서로소 정수들 찾기

def gcd(a, b):
while b:
a, b = b, a % b
return a
numbers = [12, 15, 20, 25, 30, 35, 40]
coprime_numbers = [x for x in numbers if min(numbers, key=lambda n: gcd(x, n)) == x]
print(coprime_numbers) # 출력: [12, 25, 30, 35, 40]

코드의 여러 구현 시간 측정하기

import timeit
def func1():
# 코드 1의 구현
def func2():
# 코드 2의 구현
def func3():
# 코드 3의 구현
time1 = timeit.timeit(func1, number=1000)
time2 = timeit.timeit(func2, number=1000)
time3 = timeit.timeit(func3, number=1000)
print(time1)
print(time2)
print(time3)

min()과 max()에서 .lt()와 .gt()의 역할 탐구하기

min()과 max() 함수를 호출할 때, 비교할 객체의 .lt() 및 .gt() 메서드가 사용됩니다. 이러한 메서드는 비교 연산자인 <와 >의 동작을 구현하는 역할을 합니다.

Python의 min()과 max() 에뮬레이션하기

마지막으로, 순수한 Python으로 min()과 max()의 버전을 직접 작성하여 이러한 함수가 내부적으로 어떻게 작동하는지 이해할 수 있습니다. 이를 위해 다음 단계를 따릅니다.

  1. min()과 max() 함수의 코드 이해하기
  2. 사용자 정의 min()과 max() 버전의 계획 수립하기
  3. *args의 입력 데이터 표준화하기
  4. default 인수 처리하기
  5. 선택적 key 함수 처리하기
  6. 최소 및 최대 값 찾기
  7. 사용자 정의 min()과 max() 함수 작성하기

결론

Python의 min()과 max() 함수는 다양한 상황에서 가장 작은 값과 가장 큰 값을 찾을 때 유용합니다. 이러한 함수는 순차적으로 반복 가능한 자료형에서 작동하며, 다양한 유형의 데이터에 적용할 수 있습니다.

여러분은 이 튜토리얼에서 min()과 max() 함수를 사용하는 방법을 배웠으며, 실제로 유용한 예제로 활용하는 방법을 알아보았습니다. 이제 순수 Python으로 min()과 max() 함수를 직접 작성할 수 있으며, 이를 통해 함수의 내부 동작 방식을 이해할 수 있습니다.