본문 바로가기
IT

[python] 파이썬 len 함수 기본부터 심화까지 알아보자

by MY0715 2024. 8. 11.
반응형

파이썬 len() 함수를 어떻게 사용하고 계셨나요? 단순히 그 값의 길이만을 구하기 위해서 사용하셨다면 이 글을 잘 찾아오셨습니다. 여러분들이 몰랐던 모를수밖에 없는 len()함수의 기본부터 심화까지 알아보도록 하겠습니다. 

1. 파이썬 len() 함수는 무엇인가?

파이썬 len()함수는 다양한 데이터 구조의 길이나 크기를 확인할 수 있는 매우 유용한 내장 함수입니다. 리시트, 문자열, 튜플과 같은 시퀀스 데이터 타입뿐만 아니라 딕셔너리, 세트와 같은 collection의 요소 개수를간편하게 반환할 수 있습니다. 이 함수를 통해서 파이썬 프로그래밍을 할때 좀더 도움이 될 수 있는 정보를 제공하겠습니다. 

 

2. len() 함수의 기본 사용법

2.1 문자열에서의 len 함수 사용법

파이썬에서는 문자열의 길이를 확인하는 데 len()함수를 사용할 수 있ㅅ브니다. 문자열의 각  문자는 하나의 요소로 간주되고, 이 함수는 해당 문자열에 포함된 문자의 개수를 반환합니다.

string = "Hello world!"
print(len(string))

# 출력 : 13

 

위코드에서 len(string)은 공백과 특수문자를 포함해서 총 13이라는 길이를 반환합니다. 

 

2.2 리스트에서 len() 함수 사용

리스트는 여러 요소를 포함할 수 있는 데이터 구조로 len()함수는 리스트에 포함된 요소의 개수를 반환합니다.

my_list = [1, 2, 3, 4, 5]

print(len(my_list))  

# 출력: 5

 

이 예제에서는 리스트에는 5개의 요소가 포함되어 있습니다. len()함수는 이 요소의 수를 반환합니다. 

 

2.3 튜플에서의 len() 함수를 사용

튜플은 변경이 불가능한 시퀀스 데이터 타입으로 len()함수는 튜플 내에 포함된 요소의 개수를 확인하는 데 사용됩니다.

my_tuple = (1, 2, 3)
pint(len(my_tuple))  

# 출력: 3

 

튜플의 경우에도 len() 함수는 리스트와 동일하게 요소의 개수를 반환합니다. 

 

3. python len() 함수의 다양한 활용

3.1 딕셔너리에서의 len()함수

딕셔너리는 키-값 쌍으로 구성된 데이터 구조입니다. len() 함수는 딕셔너리에 포함ㄴ된 키-값 쌍의 개수를 반환합니다. 

my_dict = {'apple': 1, 'banana': 2, 'cherry': 3}
print(len(my_dict))  

# 출력: 3

 

위 예제에서 딕셔너리는 3개의 키-값 쌍으로 이루어져 있습니다. len() 함수는 이 값 을 정확히 반환합니다. 

 

3.2 중첩된 데이터구조에서의 len() 함수

중첩 리스트와 다차원 데이터구조에서 len() 함수를 사용한다면 어떤 값을 가져올까요?  아래를 참고하세요.

nested_list = [[1, 2], [3, 4], [5, 6, 7]]
print(len(nested_list))  

# 출력: 3

 

위 예제에서는 최상위 리스트는 3개의 하위 리스트를 포함하고 있으므로 len() 함수는 3을 반환합니다.

 

3.3 세트에서의 len() 함수 

세트는 중복을 허용하지 않는 데이터 구조입니다. len() 함수는 세트 내 고유한 요소의 개수를 반환합니다.

my_set = {1, 2, 3, 4, 5}
print(len(my_set))  

# 출력: 5

 

4. python파이썬 len() 함수의 심화 사용법

4.1 커스텀 클래스에서 len() 함수 사용하기

파이썬에서는 객체 지향프로그래밍을 통해서 len() 함수의 동작을 커스터 마이징할 수 있는데요. 클래스 내에 __len__()메소드를 정의하여서 해당 클래스의 인스턴스에 대해서 len()함수를 사용할 수 있다는것입니다.

class MyClass:
    def __init__(self, data):
        self.data = data
    
    def __len__(self):
        return len(self.data)

obj = MyClass([1, 2, 3, 4])
print(len(obj))  

# 출력: 4

 

위 예제에서는 클래스 인스턴스의 길이를 __len__()메소드를 통해서 정의할 수 있습니다.

 

4.2 len() 함수와 메모리 최적화

len() 함수는 매우 효율적인 함수로 데이터 구조의 크기를 실시간으로 계산하지 않고, 이미 계산된 값을 반환합니다. 이 때문에 메모리 사용량이 적고, 큰 데이터를 처리할 때도 성능에 영향을 미치지 않습니다. 

 

4.3 Generator에서 len() 함수 사용하기

제너레이터는 한 번에 하나의 항목을생성하는 이터레이터입니다. 일반적으로 len()함수는 제너레이터에서 직접 사용할 수 없습니다. 그러나 제너레이터를 리스트나 다른 시퀀스 타입으로 변환한 후에는 len() 함수를 사용할 수 있습니다. 

def my_generator():
    yield 1
    yield 2
    yield 3

gen = my_generator()
print(len(list(gen)))  

# 출력: 3

 

위 예제에서 generator를 리스트로 변환한 후 len() 함수를사용해서 요소의 수를 구할 수 있습니다. 

 

5. len() 함수 사용 시 주의사항

  • len() 함수는 시퀀스나 컬렉션이 아닌 데이터타입에서는 동작하지 않습니다. 예를들어, 숫자나 None 타입의 객체에 대해 호출하면 오류가 발생합니다. 
  • __len__() 메소드가 정의되지 않은 사용자 정의 클래스에서는 len() 함수를 사용할 수 없습니다. 이경우는 클래스에 __len__() 메소드를 구현해야합니다. 

결론 

파이썬의 len() 함수는 다양한 데이터 구조에 적용할 수 있는 강력한 하나의 도구인데요. 기본적인 사용법부터 커스텀 클래스에서의 활용법까지 여기까지 따라오셨다면 len() 함수를 더 잘 이해하고 활용할 수 있기를 바랍니다. len() 함수를 효과적으로 사용해서 코딩의  효율성을 높이고 더나은 프로그래머가 되길 바랍니다. 

반응형