본문 바로가기
Python

파이썬 다양한 자료형의 길이를 확인하는 len() 함수 알아보기

by 산코디 2024. 5. 9.

파이썬의 len() 함수는 특정 데이터의 시퀀스나 컬렉션의 길이를 확인할 때 주로 사용되는 함수다. 자료형의 길이를 확인하는 것은 매우 중요한 작업 중 하나다. 비즈니스 로직을 처리하는 데 특정 데이터들의 길이를 알 수 없다면 순회하면서 건수를 카운팅해야 하는데 이는 매우 비효율적인 작업이므로 len() 함수와 같은 기능들을 잘 활용해줘야 한다.




len() 함수란?

len() 함수는 파이썬의 내장 함수로서, 시퀀스나 컬렉션의 요소의 개수를 반환해 주는 기능이다. 이 함수는 파이썬에서 강력한 기능 중 하나이며, 데이터 구조의 크기를 손쉽게 파악할 수 있다.

기본 문법

len(data)

함수의 기본 문법은 위와 같이 길이를 알고자 하는 값을 매개변수로 전달하면 내부적으로 건수를 세고 건수를 반환시켜 준다.


len() 함수는 리스트, 튜플, 문자열, 딕셔너리 등과 같이 다양한 자료형의 길이를 확인할 수 있다.

문자열

string = "Hello, World!"
length = len(string)

일반적으로 문자열의 경우 전체 글자수를 세어 반환시켜준다. 특정 문자열의 크기를 파악할 때 매우 유용하다.

리스트

my_list = [1, 2, 3, 4, 5]
length = len(my_list)

위와 같이 리스트의 요소 건수를 셀 수 있다.

튜플

tuple = (1, 2, 3, 4, 5)
length = len(tuple)

위와 같이 튜플 구조도 손쉽게 건수를 알 수 있다.

딕셔너리

dict = {"a": 1, "b": 2, "c": 3}
length = len(dict)

딕셔너리 형태의 요소들도 확인이 가능하다.


이렇게 다양한 자료형의 건수를 손쉽게 확인할 수 있고, 이로 인해 정말 다양한 상황에서 활용도가 매우 높은 기능이다.




len() 함수의 활용

len() 함수의 사용 방법은 매우 간단하다. 그러나 실제 어떤 상황에서 사용하는지 알아야 유사한 상황을 마주했을 때 응용이 가능하다. 어떤 활용 사례가 있는지 확인해 보자.


반복문

list = [1, 2, 3, 4, 5]
for i in range(len(list)):
    print(list[i])

우선 가장 흔히 사용되는 반복문에서 활용하는 예제다.
반복문에서 데이터 구조의 길이를 이용하여 반복 횟수를 지정할 수 있다. 위와 같이 리스트의 모든 요소를 반복하면서 작업을 처리하는 데 활용할 수 있다.

조건문

list = []
if len(list) == 0:
    print("리스트가 비어 있습니다.")

for문과 마찬가지로 조건문에서도 활용도가 상당히 높다.
위와 같이 리스트의 길이를 파악해 요소가 비어있는지 확인하여 상태를 알릴 때 유용하게 활용될 수 있다.

문자열 처리

string = "Hello, World!"
if len(string) > 10:
    print("문자열이 10자를 초과합니다.")

문자열의 길이를 파악하여 처리할 때에도 유용하게 사용될 수 있다. 위의 예시와 같이 문자열의 길이를 파악하고 정해진 길이보다 큰 경우 제한을 줄 때 사용할 수 있다. 보통 회원가입과 같이 입력값의 validation을 체크할 때 적절하게 사용된다.

자료구조의 세부 정보 확인

dict = {"a": 1, "b": 2, "c": 3}
if len(dict) > 0:
    print("딕셔너리에 요소가 있습니다.")

위의 예시와 같이 자료구조인 경우 내부 요소가 있는지 확인할 때에도 활용하기 좋다. 딕셔너리 값을 기준으로 len() 함수에 전달하면 해당 딕셔너리의 키를 기준으로 값이 있는지 확인하고 존재하는 값들의 건수를 세어 반환시켜 준다.
배열 형태의 요소뿐만 아니라 이와 같이 딕셔너리 형태도 동일하게 건수를 세어줘서 정말 활용도가 높다고 볼 수 있다.




len() 함수 사용 시 유의사항

len() 함수를 사용하기 전에 유의해야 할 것이 몇 가지 있다.

가변성
len() 함수를 사용하면 해당 자료형의 길이를 반환해 주는데, 이때, 자료형이 가변형이라면 값이 변할 수 있으므로 이 부분을 유의해서 사용해야 한다.
예를 들어, 리스트에 요소를 추가하거나 제거하는 경우 길이가 변하게 된다.

반복적인 호출
len() 함수는 내부적으로 데이터 구조를 탐색하여 길이를 계산한다. 반복적으로 호출하게 되는 경우 성능에 영향을 줄 수 있으므로 불필요하게 반복 호출이 되지 않는지 확인하고 적용하는 것이 좋다.

시간 복잡도
대부분의 경우 len() 함수의 시간 복잡도는 O(1)인데, 일부 자료형에서는 선형 시간이 소요될 수 있다. 특히 딕셔너리나 집합의 경우에는 시간 복잡도가 O(n)으로 성능에 크게 영향을 줄 수 있다.

유니코드
보통 문자열의 길이를 계산할 때에는 유니코드의 코드 포인트 단위로 계산하게 된다. 그렇기 때문에 유니코드 문자를 다룰 때에는 유의해서 사용해야 한다. 그렇지 않으면 실제 문자의 길이와 다른 결괏값을 얻을 수 있다.


위의 정리한 바와 같이 파이썬에서 len() 함수는 데이터의 구조와 작업의 목적을 잘 파악하고 사용하는 것이 좋다. 특히 성능 측면에서 크게 이슈가 생길 수 있으므로 호출 대상의 자료형이 어떤 것인지 파악하고 적절하지 않은 경우 다른 함수를 찾거나 다른 방법으로 시도해야 한다.




마무리

오늘은 파이썬의 내장함수 len() 함수에 대패서 간략하게 정리해 봤다. 이전에 함수를 사용할 때에는 리스트, 문자열, 튜플, 딕셔너리 등 큰 고민 없이 호출하여 사용했는데, 이번에 정리하면서 깨달은 점은 시간 복잡도에 의해 길이는 비슷하더라도 성능이 크게 달라질 수 있다는 것을 알 수 있었다.
다행히 이전에 적용했던 환경에서는 크게 문제가 되지 않았었지만 만약 대용량 데이터를 처리하는 작업이었다면 크게 문제가 되었을 것 같다. 정말 간단하고 심플한 함수였지만 어떤 기능이든 확실하게 알고 사용하는 것이 정말 중요하다고 다시 한번 느낄 수 있었다.

반응형