컴퓨터 공부/🐍 Python

리스트 원소 중에서 가장 길이가 긴(최대길이) 원소 찾기

letzgorats 2024. 9. 20. 05:33

 

알고리즘 문제를 풀다가 map을 활용해서 리스트 원소 중에서 가장 길이가 긴 원소를 찾는 방법을 배웠다.

사실 map의 원리를 잘 이해하면 알 수 있는 내용이지만, 빠르게 찾는 방법을 알아두면 좋으니 배워보자.

 

먼저, 방법부터 말하자면 아래와 같이 활용할 수 있다.

n = max(map(len,list))

 

편의상 list를 nums 라는 리스트라고 가정해보자.

 

map(len, nums) 는 nums가 리스트라고 가정할 때, map 함수는 리스트 nums 의 각 요소에 대해 len 함수를 적용한다는 의미다.

즉, nums 에 있는 각 요소의 길이를 계산하여 반환하는 작업이라 할 수 있다.


예시를 살펴보자.

nums = [[1,2,3], [4,5], [6]]

 

위와 같은 nums 리스트가 있다고 한다면, map(len, nums) 는 각 리스트의 길이를 반환해서 [3,2,1] 이라는 리스트를 얻게 된다.

(※ 물론 map 객체를 list로 변환해야 직접 [3,2,1] 인 것을 확인할 수 있다.)

 

이 때, max() 함수는 주어진 값들 중에서 가장 큰 값을 반환하는 함수이므로, 여기서 map 으로 얻은 객체 요소들의 길이 중에서 가장 큰 값을 찾으면 3 이 된다.

nums = [[1,2,3],[4,5],[6]]
n = max(map(len, nums))	# 3

 

실제로, nums 리스트 중에 가장 길이가 긴 리스트는 [1,2,3] 으로 3의 길이를 갖는다.

 

한마디로, `max(map(len,nums))` 는 nums 라는 리스트 안에 있는 하위 리스트나 문자열 등 각 요소의 길이를 구하고, 그 중 가장 긴 요소의 길이를 반환하는 작업이다.

 


또 다른 예를 살펴보자.

nums = [123,45678,9]

 

위와 같이 숫자로 이루어진 nums 리스트가 있다고 한다면, 숫자를 문자열로 변환을 하고 길이를 측정할 수 있다.

nums = list(map(str,nums))

 

먼저 nums = list(map(str,nums))숫자들을 문자열로 변환을 해서 각 원소를 숫자가 아닌 스트링 형태로 바꿔준다.

이 작업을 하는 이유는 숫자에는 len() 함수를 적용시킬 수 없기 때문이다.

그런 후에,  map(len,nums) 를 적용하면 원소가 숫자라도 각 원소의 길이를 반환할 수 있다.

 

이 때, max(map(len,nums)) 의 값은 45678 값이 제일 길이가 긴 숫자이므로 45678 의 길이인 5를 반환한다.

nums = [123,45678,9]
nums = list(map(str,nums))
n = max(map(len, nums))	# 5

 

이처럼, 리스트 내부의 원소가 리스트이든, 문자열이든, 숫자이든 해당 시퀀스의 원소를 "길이"를 기준으로 map화가 가능하고, 각 원소의 길이를 파악할 수 있다.

 

즉, `max(map(len,nums))` 는 리스트의 원소 중에 최대 길이를 반환하고, 'min(map(len,nums))` 는 최소 길이를 반환한다.

 

반응형