티스토리 뷰
2차원 리스트 전체 값 중에서 최대, 최소 값을 구할 때 흔히 max(리스트)를 넣어본 경험이 있을 겁니다.
하지만, 원하는 값이 나오지 않습니다.
보통 최대, 최소, 정렬 등 계산이 들어가는 함수는 대부분 2차원 배열 내 각 첫 번째 인자부터 계산이 됩니다.
따라서 전체 계산한 값을 구하기 위해서는 다른 방법을 사용해야 합니다.
data = [
[0, 3, 2],
[0, 1, 2],
[2, 1, 0],
[3, 2, 1]
]
print(max(data)) #[3, 2, 1]
print(min(data)) #[0, 1, 2]
sort(data)
print(data) #[[0, 1, 2], [0, 3, 2], [2, 1, 0], [3, 2, 1]]
위 예시에서 max 함수는 data라는 2차원 배열 내의 각 첫 인자(0, 0, 2, 3)을 비교하여 가장 큰 값인 3을 선택하게 됩니다.
따라서 max(data)의 값은 가장 큰 3에 해당하는 인덱스인 [3, 2, 1]이 리턴되게 됩니다.
min(data)에서는 [0, 1, 2]이 리턴되는 데 이는 첫 인자 값이 동일할 경우 그 다음 인덱스 값을 차례로 비교하게 되기 때문입니다.
그럼 이제 우리가 원하는 값인 전체 2차원 배열 중 가장 큰 숫자 하나를 리턴하려고 할때는 어떡할까요?
이때 사용가능한 것이 바로 map(function, target)입니다.
map은 target이 될 iterable의 각 요소에 function을 적용시켜줍니다.
결과값은 iterator로 리턴되기 때문에 보통 list 로 변환하는 편입니다.
따라서 map()을 활용하면 2차원 리스트의 각 요소에 대해 최대/최소를 계산 후 나온 최대/최소 값들의 리스트에서 다시 최대/최소 값을 구하면 최종적으로 원하는 값을 구할 수 있게 됩니다.
data = [
[0, 3, 2],
[0, 1, 2],
[2, 1, 0],
[3, 2, 1]
]
data = list(map(max, data))
print(data) #[3, 2, 2, 3]
data = [
[0, 3, 2],
[0, 1, 2],
[2, 1, 0],
[3, 2, 1]
]
data = max(map(max, data))
print(data) #3
'개발 > Python' 카테고리의 다른 글
[Python] 파이썬 지수와 로그 (feat. 몇 제곱인지 구하기) (0) | 2023.02.19 |
---|---|
[Python] 파이썬 빠른 입출력 (0) | 2023.01.27 |
[Python] 여러 기준에 따른 정렬 (feat. 파이썬 정렬 기준 여러개) (0) | 2023.01.25 |
[Python] List 리스트 자료형 관련 함수 (0) | 2023.01.06 |
[Python] 진법 변환 (0) | 2023.01.06 |
- Total
- Today
- Yesterday
- 서버
- it 동아리
- 리빙랩
- 육지행
- 후기
- 디프만
- 프로그래머스
- 인프런
- test
- 해커톤
- 글또
- 6팀
- tdd
- 알고리즘
- 16기
- 회고
- server
- 15기
- 백엔드
- 1주차
- 글로컬
- 10기
- 스터디
- AWS
- spring boot
- 파이썬
- 중간발표
- python
- 연합 동아리
- 육.지.행
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |