len()은 파이썬의 내장 함수로, 문자열, 리스트, 튜플, 딕셔너리, 집합 등과 같이 여러 요소를 담고 있는 객체의 요소 개수를 반환합니다.
1. 문자열 (String)
문자열에서 len()은 문자(character)의 개수를 셉니다. 공백이나 특수문자도 하나의 문자로 포함됩니다.
str1 = "Hello"
print(len(str1))
# 결과: 5
str2 = "Python is fun!"
print(len(str2))
# 결과: 14
2. 리스트 (List)
리스트에서 len()은 최상위 레벨에 있는 요소의 개수를 셉니다. 리스트 안에 또 다른 리스트가 있어도, 그 자체를 하나의 요소로 계산합니다.
list1 = [1, 2, 3, 4]
print(len(list1))
# 결과: 4
list2 = [10, [20, 30], 40]
print(len(list2))
# 결과: 3 (요소는 10, [20, 30], 40 세 개입니다.)
3. 튜플 (Tuple)
튜플은 리스트와 유사하게 동작하며, len()은 튜플 내 요소의 개수를 반환합니다.
tuple1 = ('a', 'b', 'c')
print(len(tuple1))
# 결과: 3
tuple2 = (1, ) # 요소가 하나인 튜플을 만들 때는 쉼표가 필요합니다.
print(len(tuple2))
# 결과: 1
4. 딕셔너리 (Dictionary)
딕셔너리에서 len()은 키-값(key-value) 쌍의 개수를 반환합니다.
dict1 = {'name': 'Alice', 'age': 30, 'city': 'New York'}
print(len(dict1))
# 결과: 3
5. 집합 (Set)
집합에서 len()은 고유한 요소의 개수를 반환합니다. 중복된 요소는 하나로 취급됩니다.
set1 = {1, 2, 3, 3, 4}
print(len(set1))
# 결과: 4 (중복된 3은 하나만 계산됩니다.)
주의사항
len() 함수는 숫자(int, float)와 같은 단일 값 객체에는 적용할 수 없습니다. 이러한 객체는 여러 요소를 포함하고 있지 않기 때문입니다.
num = 123
print(len(num))
# TypeError: object of type 'int' has no len()
개념정리 질문)
len([10,[40,50],1400,[100,300]]) 일때는 결과가 4, 즉 4개의 요소가 있어서 입니다.
네, 맞습니다. 아주 정확하게 이해하셨습니다.
len([10,[40,50],1400,[100,300]])의 결과가 4인 이유는, 해당 리스트가 4개의 요소를 포함하고 있기 때문입니다.
이 경우, 각 요소는 다음과 같습니다.
- 10 (정수)
- [40,50] (리스트)
- 1400 (정수)
- [100,300] (리스트)
len() 함수는 리스트 안에 어떤 자료형이 들어있든지 상관없이, 최상위 레벨에 있는 요소의 개수만 세어줍니다. 따라서 중첩된 리스트 [40,50]와 [100,300]는 그 자체로 하나의 요소로 계산되는 것입니다.
(★ 추가 개념 정리 ★)
>>> len('abcd')
4
>>> len(['abcd'])
1
이 소스와 결과값입니다. 소스 설명)
주어진 두 코드 len('abcd')와 len(['abcd'])의 결과값이 다른 이유는 len() 함수가 각 자료형의 '요소'를 세는 방식이 다르기 때문입니다.
len('abcd')가 4인 이유
'abcd'는 **문자열(String)**입니다. 파이썬에서 문자열은 글자들이 순서대로 나열된 시퀀스로 취급됩니다. len() 함수는 이 문자열을 구성하는 개별 문자 요소의 개수를 셉니다.
- 'a'
- 'b'
- 'c'
- 'd'
따라서 len('abcd')는 4개의 문자 요소를 가지고 있으므로, 결과는 4가 됩니다.
len(['abcd'])가 1인 이유
['abcd']는 **리스트(List)**입니다. 리스트는 콤마(,)로 구분된 요소들의 집합입니다. len() 함수는 이 리스트의 최상위 레벨에 있는 요소의 개수를 셉니다.
- ['abcd'] 리스트는 'abcd'라는 단 하나의 요소를 가지고 있습니다.
따라서 len(['abcd'])는 최상위 레벨에 있는 요소가 하나뿐이므로, 결과는 1이 됩니다. 리스트 안에 있는 'abcd' 문자열의 길이는 계산에 포함되지 않습니다.
핵심 요약
- len('abcd'): 문자열의 개별 문자를 셉니다.
- len(['abcd']): 리스트의 최상위 요소를 셉니다.
이 두 가지는 자료형이 다르기 때문에 len() 함수가 세는 대상도 달라지는 것입니다.
용어 설명)
최상위 레벨이 무슨 의미인가요?
'최상위 레벨(Top-Level)'은 어떤 자료구조에서 가장 바깥쪽, 즉 바로 접근할 수 있는 위치를 의미합니다.
최상위 레벨의 의미
파이썬에서 리스트나 튜플 같은 자료구조는 다른 자료구조를 포함할 수 있습니다. 이때 len() 함수는 중첩된 구조의 내부까지 들어가지 않고, 가장 바깥쪽에 있는 껍데기에 담긴 요소들의 개수만 셉니다. 이 가장 바깥쪽 껍데기를 '최상위 레벨'이라고 부릅니다.
예를 들어, [10, [20, 30], 40]라는 리스트가 있다고 해보죠. 이 리스트의 최상위 레벨에는 세 개의 요소가 있습니다:
- 정수 10
- 리스트 [20, 30]
- 정수 40
[20, 30]은 그 자체로 하나의 요소로 취급됩니다. len() 함수는 이 리스트의 내부까지 들어가서 20과 30을 따로 세지 않습니다. 따라서 len([10, [20, 30], 40])의 결과는 3이 되는 것입니다.
중첩된 구조와 최상위 레벨
마치 서랍장이 여러 개의 칸으로 이루어져 있는 것과 비슷합니다.
- len() 함수는 서랍장 전체에 **몇 개의 칸(서랍)**이 있는지 셉니다.
- 각 칸 안에 무엇이 들어있는지는 신경 쓰지 않습니다.
서랍장 전체가 최상위 레벨, 각 서랍이 그 안의 요소인 셈입니다. 서랍 안에 옷가지가 몇 개 있든, len()은 서랍의 개수만 셉니다.
'파이썬(Python)' 카테고리의 다른 글
| 파이썬, 문제풀이 / 친구 등록, 검색, 검색 후 출력 프로그램(2 of 2)-(중요) (1) | 2025.08.20 |
|---|---|
| 파이썬, 문제풀이 / 친구 등록, 검색, 검색 후 출력 프로그램(1 of 2) (0) | 2025.08.20 |
| 파이썬, 세트 연산(세트 합집합, 교집합, 차집합) (4) | 2025.08.19 |
| 파이썬, 세트 조작 함수 (값 추가와 삭제 : add, update, remove, clear) (0) | 2025.08.19 |
| 파이썬, set()에 대해 정리 (1) | 2025.08.19 |
콘텐츠 내 자동삽입광고
