Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬에서 len() 함수 없이 리스트의 길이를 구하는 방법

리스트 nums가 있다고 가정해 보겠습니다. 이때 len(), size(), length()와 같은 내장 길이 관련 함수를 전혀 사용하지 않고 이 리스트의 길이(요소 개수)를 구해야 합니다.

예를 들어 입력이 다음과 같다면,

nums = [5, 7, 6, 4, 6, 9, 3, 6, 2]

출력은 요소가 총 9개이므로 9가 되어야 합니다.

해결 접근 방식

이 문제는 map()과 리스트 연산을 조합하면 간단하게 해결할 수 있습니다. 핵심 아이디어는 다음과 같습니다.

  • 리스트의 각 요소를 값 그대로 두지 않고 1로 변환합니다.
  • 변환된 결과를 모두 더하면(sum()) 1의 개수, 즉 원래 리스트의 요소 개수와 같아집니다.
  • map()에 람다(lambda, 익명 함수)를 정의하여 모든 요소를 한 번에 1로 바꿉니다.

즉, [5, 7, 6, ...][1, 1, 1, ...]로 변환한 뒤 합계를 구하는 방식입니다.

예제 코드

더 나은 이해를 위해 실제 구현 예제를 살펴보겠습니다.

def solve(nums):
   return sum(map(lambda x: 1, nums))

nums = [5, 7, 6, 4, 6, 9, 3, 6, 2]
print(solve(nums))

입력

[5, 7, 6, 4, 6, 9, 3, 6, 2]

출력

9

동작 원리

map(lambda x: 1, nums)는 리스트의 각 요소를 인자로 받아 항상 1을 반환하는 익명 함수를 모든 요소에 적용합니다. 그 결과 [1, 1, 1, 1, 1, 1, 1, 1, 1]과 같은 이터레이터가 생성되고, sum()이 이 값들을 모두 더해 최종적으로 9, 즉 리스트의 길이를 반환합니다.

이 방법은 반복문을 명시적으로 작성하지 않고도 함수형 스타일로 리스트의 크기를 계산할 수 있다는 점이 특징입니다.