파이썬 내장 함수 중에는 최댓값을 알아서 찾아주는 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에 대해서 알아봤다.
역시 라이브러리나 내장 함수 기능들은 사용하기 전에 공식 문서를 한 번 보는게 중요한 것 같다.
'Programming > Python' 카테고리의 다른 글
[sklearn] Target is multiclass Error 해결 (0) | 2022.01.18 |
---|---|
[Pandas] DataFrame 모든 행, 열 출력하기 (0) | 2021.12.01 |
[Pandas] categorical data type(범주형 데이터 타입)이란? (category datatype 사용 예제, pandas.Series.cat 사용법) (0) | 2021.11.29 |
[Python 3.x] 바이트 스트림(byte-stream) 객체의 등장 (0) | 2021.11.28 |
PyG 란? (0) | 2021.11.16 |