티스토리 뷰

728x90

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]이 리턴되는 데 이는 첫 인자 값이 동일할 경우 그 다음 인덱스 값을 차례로 비교하게 되기 때문입니다.

 

그럼 이제 우리가 원하는 값인 전체 3차원 배열 중 가장 큰 숫자 하나를 리턴하려고 할때는 어떡할까요?

이때 사용가능한 것이 바로 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) #[2, 3, 2, 3]

data = [
    [0, 3, 2],
    [0, 1, 2],
    [2, 1, 0],
    [3, 2, 1]
]
data = max(map(max, data))
print(data) #3
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
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
글 보관함