본문 바로가기

Programming/Python

[Python] max 내장 함수와 선택인자(key, default)

728x90
반응형
 

내장 함수 — Python 3.10.0 문서

내장 함수 파이썬 인터프리터에는 항상 사용할 수 있는 많은 함수와 형이 내장되어 있습니다. 여기에서 알파벳 순으로 나열합니다. abs(x) 숫자의 절댓값을 돌려줍니다. 인자는 정수, 실수 또는 __

docs.python.org

파이썬 내장 함수 중에는 최댓값을 알아서 찾아주는 max()가 있다.

굳이 내가 최댓값을 찾는 코드를 짜지 않아도 되니 간단하지만 너무 편리하고 좋은 기능:)

 

max는 다음과 같이 배열 안에 있는 여러 값들 중 가장 큰 값을 찾아주기도 하고, 

두 값 중 더 큰 값을 비교해서 찾아주기도 한다. (반대로 작은 값을 찾을 때에는 min)

>>> max([1, 2, 3, 4, 5])
5
>>> max(3, 5)
5

 

오늘 이 글을 쓰는 이유는 다름이 아니라 max 함수에서 사용할 수 있는 key 기능 때문이다.

사실 sort 내장 함수에서는 key 기능이 있는 것을 알았지만 max에서도 key가 있는지는 몰랐다. (아마 나만 몰랐던 걸 수도..^^)

뭐, 그래도 나 뿐만 아니라 누군가 한 명쯤 또 모르는 사람에게 도움을 주자는 생각으로 정리해본다ㅋㅋ

 

max에는 선택적으로 사용할 수 있는 인자로 key와 default가 있다.

1) key

key는 간단하게 설명하자면 무엇을 기준으로 max값을 구할 것인가! 라고 생각하면 될 것 같다.

예를 들어, sort에서 많이 사용하듯 lambda를 활용하는 방법이 있다.

만약, 다음과 같은 배열에서 그냥 max를 사용한다면 첫 번째 인자를 기준으로 최댓값을 찾아주는 것을 확인할 수 있다.

>>> a = [(0, 50), (1, 30), (2, 40), (3, 10)]
>>> max(a)
(3, 10)

만약 두 번째 인자를 기준으로 max 값을 구하고 싶다면 key를 활용하면 된다.

>>> max(a, key = lambda x : x[1])
(0, 50)

 

또는 key로 len을 준다면 길이를 기준으로 최댓값을 구할 수도 있다.

>>> a = [[1, 2, 3], [1, 2, 3, 4, 5, 6, 7], [3], [7, 5, 3, 1, 2]]
>>> max(a, key = len)
[1, 2, 3, 4, 5, 6, 7]

간단하지만 알아두면 훨씬 편리하게 코드를 짤 수 있을 것이다!

 

 

2) default

이는 제공된 iterable이 비어있는 경우 돌려줄 객체를 지정한다. 

iterable이 비어 있고 default 가 제공되지 않으면 ValueError 가 발생한다.

코드를 보면 훨씬 쉽게 이해가 갈 것이다.

예를 들어 비어있는 배열을 max 함수에 넣으면 ValueError가 난다.

>>> a = []
>>> max(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: max() arg is an empty sequence

만약, 이때 default 값을 넣어주면 오류 대신 default 값을 리턴해주므로 에러 없이 코드를 실행시킬 수 있다!

>>> max(a, default = 4)
4

 

간단하지만 몰랐던 max의 두 가지 선택 인자 key, default에 대해서 알아봤다.

역시 라이브러리나 내장 함수 기능들은 사용하기 전에 공식 문서를 한 번 보는게 중요한 것 같다.

728x90
반응형